bcp命令用空值替换空字符串

时间:2015-06-26 21:27:08

标签: sql-server sqlbulkcopy bcp

以下bcp命令将空字符串自动转换为空值:

BCP "stored_proc_name" queryout C:\Outdir\data.csv -c -t , -T -Sserverx -Uusery -Ppassz -dproddb

我需要保留空字符串 而不是被NULL替换。

最好的方法是什么?可以关闭bcp自动转换吗?

3 个答案:

答案 0 :(得分:1)

那是design

  

out 从数据库表或视图复制到文件。如果指定现有文件,则会覆盖该文件。提取数据时,请注意bcp实用程序将空字符串表示为null,将空字符串表示为空字符串。

解决方法在您的存储过程中,在发出SELECT时,使用NULLIF()COALESCE()函数来输出NULL

答案 1 :(得分:1)

最好的方法是在数据库上保留空值而不是空字符串。然后BCP将空字符串导出到文件(.csv,.txt左右)。

请参阅BCP MSDN

  
      
  • 将数据库表或视图中的副本发送到文件。如果指定现有文件,则会覆盖该文件。 提取数据时,   请注意,bcp实用程序将空字符串表示为null和a   null string as a empty string。
  •   

答案 2 :(得分:0)

我使用类似的BCP脚本将数据导出到.csv。我发现最简单的(根据后面的更改,如果有必要)使用COALESCE()ISNULL()以及ALTER存储过程从SELECT创建一个视图。来自视图的数据。