我有一个制表符分隔的文件,它有unicode字符和LF作为行尾。但是,当我尝试使用bcp实用程序和加载到表中的-c开关导入此文件时,字符不正确。当我尝试使用-w开关时,它无法加载,并出现以下错误。
“在BCP数据文件中遇到MicrosoftUnexpected 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字符?
发布于 2021-07-15 14:23:44
我找到了这个问题的解决方案。Unicode开关适用于Unicode字符,但是如果您的文件是-w -8编码的,那么您必须使用-C (大写C)和代码页号,因此对于UT-8,它将是65001以及-c开关(小写c)。
因此,该命令将如下所示
bcp TableName1 in DelimitedFile1.txt -c -C 65001 -T -S Server01 -q -t \t -r 0x0A -F2https://stackoverflow.com/questions/68328871
复制相似问题