导入具有扩展ASCII字符的字段中的BCP问题

时间:2016-07-05 01:16:01

标签: c# sql-server ssis bcp

我正在尝试为文件中的一组记录执行BCP。它在具有扩展ASCII字符的记录中失败。

我尝试了命令

bcp db1.table1 in  "C:\file.DAT"  -T -C ACP -SMyServer\SQL2012Instance -r"\n" -t"," -b100000 -c 

我使用代码页选项作为-C RAW,但它没有成功。

对于该记录,我收到以下错误。在这种情况下,您可以帮助指定格式。

SQLState = 22001, NativeError = 0 Error = [Microsoft][SQL Server Native Client 10.0]String data, right truncation

在这种情况下,您可以请求帮助确定格式。

1 个答案:

答案 0 :(得分:2)

问题已确定,我想更新以下事实:BCP的输入文件是UTF-8格式,这不是BCP实用程序支持的编码。

因此,我准备了Latin1Encoding(在C#中)而不是UTF-8的文件。它仍然可以在1个字节中保存扩展的ascii字符。 然后我更改了BCP命令以接受代码页1252,该代码页用于BCP支持的拉丁语1编码,这是有效的。请参阅下面的更改命令。

bcp db1.table1 in  "C:\file.DAT"  -T -C 1252 -SMyServer\SQL2012Instance -r"\n" -t"," -b100000 -c 

通过在Unicode字符集中准备文件,还有一个替代解决方案,并且可以在命令中使用-w选项而不是-c。