以下bcp命令将空字符串自动转换为空值:
BCP "stored_proc_name" queryout C:\Outdir\data.csv -c -t , -T -Sserverx -Uusery -Ppassz -dproddb
我需要保留空字符串 而不是被NULL替换。
最好的方法是什么?可以关闭bcp自动转换吗?
答案 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
创建一个视图。来自视图的数据。