关于 bcp 实用工具导出空字符串的注意事项

   Updated: 2012-12-03 23:54       关于 bcp 实用工具导出空字符串的注意事项无评论

环境:SQL Server 2000

有时候我们想用 bcp 命令导出一个字段的值为什么也没有的空值。

我们一般会直接插入一个空值,比如:

bcp "SELECT a,'',c  FROM kmjxc_pro..TempTable" queryout c:\aaa.txt -c -T

或者将值为固定值 xx 的某列替换为空值,比如:

bcp "SELECT a,replace(b,'xx',''),c FROM kmjxc_pro..TempTable" queryout c:\aaa.txt -c -T

但当我们打开导出的 aaa.txt 文件时,会发现空值处被转换成了 0x00。

原因如下:提取数据时, bcp 实用工具将空字符串表示为 null,而将 null 字符串表示为空字符串。(0x00 代表 null)

解决办法:最简单的就是直接写上 null,比如:

bcp "SELECT a,null,c FROM kmjxc_pro..TempTable" queryout c:\aaa.txt -c -T

在查询分析器中,它对空字符串和 null 不做任何处理而直接输出。所以要注意 bcp 和查询分析器中对待空字符串和 null 的差别。

另外,bcp 中如果要保留 null 字符串,则在命令后加-k 参数即可。

参考资料:

  1. bcp 提取空字符串的解决办法
  2. SQL Server 数据导入导出工具 BCP 详解

发表评论

电子邮件地址不会被公开。 必填项已用*标注