BCP命令为具有xml字符(<,>,\)的数据添加换行符,同时在sql server中将数据导出为CSV

时间:2013-03-08 08:38:21

标签: sql sql-server-2008

这是我用来将数据导出到SQL Server 2008中的CSV文件的BCP命令:

EXEC master..xp_cmdshell 'BCP "exec ESB_ADT_DB.dbo.ProcTest" queryout "D:\outputfile.csv" -q -T -w -t,'

问题在于表一列包含xml字符(<,>,),对于此数据,它在写入文件后添加换行符。如何停止bcp命令将新行字符添加到写入文件的数据中。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我碰巧用一个输出流的proc来做这个,所以我只是在动态sql的末尾添加了一个-r \ 0来调用BCP命令。 (我也添加了-a选项,但不确定它是否会影响任何内容。此外,代码最初也是用-c选项编写的。)

命令字符串现在执行此操作:

set @sql ='bcp“exec my_xml_proc”QUERYOUT“outputfile.xml”-S server -U user -P password -c -a 65535 -r \ 0“;

exec @sql;

-r \ 0似乎有效。我注意到当我指定一个常规字符(-r#)时,更改行终止符会在结束文档标记的末尾生成一个具有指定字符的流,但最终用法需要格式良好的XML文档,所以我更改了到-r \ 0。