批量插入 SQL 命令无法插入第一行

Bulk insert SQL command cannot insert first row

我正在为 SQL 服务器使用批量插入命令,但由于某种原因,第一行没有被插入。为什么我不能从第一行插入数据?批量插入是否期望 headers 作为默认值,我该如何避免这种情况?如果我添加一个虚拟行并将 WITH 设置为 FIRSTROW = 2 然后第一行插入没有问题,但我认为这不是一个好的解决方案。

错误代码:

Msg 4864, Level 16, State 1, Line 1
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 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;;

我在使用 Feed/Carriage Return 换行时遇到了问题,这也可能是这里的问题。对于换行符,我必须使用 0x0a:

的行终止符
BULK INSERT TableData
FROM 'C:\Users\Oscar\file.csv'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '0x0a',
KEEPNULLS,
KEEPIDENTITY)

该脚本可能是 utf-8,您正尝试使用 cp-1252 或其他方式从 cmd 加载它,开头的 UTF-Bom 吓坏了解释器。 用十六进制编辑器看看,你会看到的。

另存为 ANSI 并重试。