我在sql server中使用bcp命令,借助以下命令将查询生成的数据导出到.csv文件
* xp_cmdshell bcp EXEC .DBO。 QUERYOUT -U -P / c / t,-T -S *
它正常工作并按预期导出数据但现在我们有一个包含多语言数据的列,并且在导出时使用csv文件中的上述命令数据显示为“????????”。
在做了一些谷歌搜索之后,我发现了一些其他的开关,如-w用于unicode字符,但是这个选项正在创建unicode文件并且不能正确打开excel(列不是用逗号(,)分隔的)
如果我遗失任何东西,有人可以帮助我吗?
答案 0 :(得分:2)
/t,
不正确。它应该显示-t,
来设置字段分隔符。 -w
是unicode的正确标志。另外我不认为-U / -P与-T。
bcp AdventureWorks2012..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T
请参阅以下技术说明中的示例区域: http://technet.microsoft.com/en-us/library/ms188289.aspx
答案 1 :(得分:2)
尝试仅使用-w -T。 不要添加字段分隔符
答案 2 :(得分:0)
我不认为" / c"或" / t"是正确的开关。请参阅文档here:它应该是-c或者在你的情况下是-w用于unicode。尝试使用cmd行:
bcp AdventureWorks2012.dbo.myTestUniCharData IN C:\temp\logs\ex170112.log -w -S
localhost\SQLEXPRESS -T
您还可以使用格式文件(.fmt)告诉它格式化某些列。见here。
答案 3 :(得分:0)
使用-w
开关会生成UTF16格式的文件,使用起来并不容易。
如果特殊字符被ISO 8859-1字符覆盖,请在bcp命令中使用开关-C -c
。 -C
制作一个ISO 8859-1文件。