Sql 在表中大容量插入多个管道数据

Sql 在表中大容量插入多个管道数据,sql,sql-server,Sql,Sql Server,我编写了一个查询,将.lst文件中的数据插入表名AxisATM中,但当我尝试插入时,会出现错误 当我从LST文件中删除除第一行以外的所有行时,它会给我成功消息,表示1行已更改 Msg 4866, Level 16, State 1, Line 1 The bulk load failed. The column is too long in the data file for row 1, column 36. Verify that the field terminator and row t

我编写了一个查询,将.lst文件中的数据插入表名AxisATM中,但当我尝试插入时,会出现错误

当我从LST文件中删除除第一行以外的所有行时,它会给我成功消息,表示1行已更改

Msg 4866, Level 16, State 1, Line 1
The bulk load failed. The column is too long in the data file for row 1, column 36. Verify that the field terminator and row terminator are specified correctly.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
查询:-

    BULK
INSERT dbo.ATMAxis
FROM 'c:\AGS_WINCORE_120901.lst'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = 'CHAR(13)'
)
GO
AGS_WINCORE_120901.lst:-

PRO1|......|00000000000|0| {Like it has 36 '|' separators}

使用记事本++我知道行尾字符是CR LF

,因为错误显示第36列的字符比表列的第36列的字符多。您需要增加该列的大小

行终止符似乎会产生问题。如果是这种情况,请尝试用
Char(10)
替换
/r/n
,这样可以解决问题。另外,检查字符(13)


有更多信息。

正如所料,问题在于

ROWTERMINATOR = 'CHAR(13)'
我把它改成了

ROWTERMINATOR = '0x0A'

我猜行终止符='\r\n'正在产生问题。如果在记事本++中使用CR&LF打印,它们是否正确?我尝试了“CHAR(13)”&“CHAR(10)”以及“CHAR(13)+CHAR(10)”…但似乎没有任何效果。谢谢。这简直快把我逼疯了!