我正在为SQL Server使用批量插入命令,但由于某种原因未插入第一行。为什么我不能从第一行插入数据?批量插入是否期望标头为默认值,我如何绕过这个?如果我添加一个虚拟行并将WITH
设置为FIRSTROW = 2
,那么第一行插入时没有问题,但我不认为这是一个很好的解决方案。
错误代码:
Msg 4864,Level 16,State 1,Line 1
第1行第1列(table_id)的批量加载数据转换错误(类型不匹配或指定代码页的无效字符)。
命令:
BULK INSERT TableData
FROM 'C:\Users\Oscar\file.csv'
WITH (FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n',
KEEPNULLS,
KEEPIDENTITY)
示例数据:
1;Text 1;1;0;;
2;Text 2;1;0;;
3;Text 3;1;0;;
4;Text 4;1;0;;
5;Text 5;1;0;;
答案 0 :(得分:2)
脚本可能是utf-8而你正试图从cmd加载cp-1252或者什么东西,UTF-Bom一开始就把翻译器吓坏了。 用hexeditor查看,你会看到它。
另存为ANSI,然后重试。
答案 1 :(得分:0)
我遇到了换行/回车换行问题,这也可能是问题所在。对于换行,我必须使用0x0a
的行终止符:
BULK INSERT TableData
FROM 'C:\Users\Oscar\file.csv'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '0x0a',
KEEPNULLS,
KEEPIDENTITY)