无法使用BCP实用程序和w开关导入数据



我有一个以制表符分隔的文件,该文件具有unicode字符,并以LF作为行尾。当我尝试使用bcp实用程序和-c开关导入此文件时,它会加载到表中,但是,字符不正确。当我尝试使用-w开关时,它无法加载,并出现以下错误。

"[Microsoft][ODBC Driver 17 for SQL Server]在BCP数据文件"中遇到意外EOF;

以下是文件中的文本

ialgcd  ianvmn  sourceVersion
PT  Português   2021-06-W24
SP  español 2021-06-W24
EG  English 2021-06-W24
FR  Français    2021-06-W24
GE  Deutsch 2021-06-W24
RU  Русский 2021-06-W24
PB  Português(Brazil)   2021-06-W24
KR  한국어 2021-06-W24
CH  中文  2021-06-W24

如果我以下面的方式使用-c开关,它加载时不会出错。但是字符不正确

bcp TableName1 in DelimitedFile1.txt -c -T -S Server01 -q -t t -r 0x0A -F2

如果我使用-w开关,它不会加载任何数据并抛出错误

bcp TableName1 in DelimitedFile1.txt -w -T -S Server01 -q -t t -r 0x0A -F2

我尝试了所有不同类型的行终止符和字段终止符的组合,也尝试了使用-N开关,还尝试了使用格式化文件,但都不起作用。

我尝试使用的格式文件是

14.0
3
1       SQLNCHAR            2       510     "t"         1     ialgcd                         SQL_Latin1_General_CP1_CI_AS
2       SQLNCHAR            2       510     "t"         2     ianvmn                         SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR            2       510     "0x0A"       3     sourceVersion                  SQL_Latin1_General_CP1_CI_AS

我不知道为什么它能用-c开关而不能用-w开关。在文件的开头是否需要BOM字符?

我找到了这个问题的解决方案-w开关适用于Unicode字符,但如果你的文件是UTF-8编码的,那么你必须使用-C(大写C(和代码页码,所以对于UT-8,它将是65001和-C开关(小写C(

所以命令看起来像

bcp TableName1 in DelimitedFile1.txt -c -C 65001 -T -S Server01 -q -t t -r 0x0A -F2

最新更新