无法使用 BCP 实用程序和 w 开关导入数据
Unable to Import data using BCP utility and w switch
我有一个制表符分隔的文件,它有 unicode 字符并以 LF 作为行尾。当我尝试使用 bcp 实用程序和 -c 开关导入此文件时,它加载到 table,但是,字符不正确。当我尝试使用 -w 开关时,它无法加载并出现以下错误。
[Microsoft][SQL 服务器的 ODBC 驱动程序 17]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
我有一个制表符分隔的文件,它有 unicode 字符并以 LF 作为行尾。当我尝试使用 bcp 实用程序和 -c 开关导入此文件时,它加载到 table,但是,字符不正确。当我尝试使用 -w 开关时,它无法加载并出现以下错误。
[Microsoft][SQL 服务器的 ODBC 驱动程序 17]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