盆盆罐罐

上海邦麦信息科技有限公司旗下子网站;POS系统、计算机技术资料搜集

关于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详解

分类:数据库, Windows

标签:, , ,

对本文发表评论





9 + 0 = ?

注意:
1、请勿单纯发表顶啊、打酱油之类无任何意义的评论,否则将被视为spam!谢谢合作!
2、但欢迎你留下对本文的看法或技术上的任何疑问,我会及时回复你。