BCP命令导入简单CSV数据至SQL Server失败原因咨询
两种BCP命令导入带BOM的UTF-8 CSV失败原因分析
测试环境信息
测试CSV文件
带BOM的UTF-8编码,每行以\r\n作为换行符(包含最后一行),内容如下:
1,"qwe" 2,"rty" 3,"uio" 4,"äöü"
目标数据库表结构
CREATE TABLE Import_data_test_1([column1][integer], [column2][nvarchar])
第一种BCP命令失败原因
执行的命令:
bcp sn_test_2.dbo.Import_data_test_1 in D:\Uuu\Test_1.csv -w -T -t , -r \n
执行报错:Unexpected EOF encountered in BCP data-file
失败核心原因:
- 编码格式不匹配:
-w参数指定BCP以**Unicode(UCS-2小端)**格式读取文件,但目标CSV是带BOM的UTF-8编码,字节流解析逻辑冲突,导致BCP无法正确识别字段和行的边界。 - 行终止符设置错误:文件实际行终止符是
\r\n,但命令中指定-r \n,BCP会将每行开头的\r当作字段内容的一部分,造成行解析错位,最终误判为提前到达文件末尾。
第二种交互式BCP命令失败原因
执行交互式命令时的关键设置:
- column1字段终止符设为
, - column2字段终止符尝试留空或输入
\n
执行结果为0行导入,失败核心原因:
- UTF-8 BOM未被正确处理:交互式模式默认使用非Unicode格式读取文件,CSV开头的3字节BOM(
EF BB BF)会被当作第一行column1的内容,BCP无法将其解析为整数类型,直接跳过该行;后续行也会因编码不匹配,无法正确识别字段边界。 - 字段/行终止符设置错误:CSV中column2的实际终止符是
\r\n,但设置中要么无终止符要么仅指定\n,加上字段被双引号包裹,BCP无法区分字段内容与分隔符,解析逻辑混乱,最终未识别到任何有效数据行。
内容的提问来源于stack exchange,提问作者user21273895
相关产品推荐
相关产品推荐

