我正在执行批量插入操作:
DECLARE @row_terminator CHAR;
SET @row_terminator = CHAR(10); -- or char(10)
DECLARE @stmt NVARCHAR(2000);
SET @stmt = '
BULK INSERT accn_errors
FROM ''F:\FullUnzipped\accn_errors_201205080105.txt''
WITH
(
firstrow=2,
FIELDTERMINATOR = ''|'' ,
ROWS_PER_BATCH=10000
,ROWTERMINATOR='''+@row_terminator+'''
)'
exec sp_executesql @stmt;
我得到了以下错误:
Msg 4832, Level 16, State 1, Line 2
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 2
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 2
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
有没有办法知道这个错误发生在哪一行?
我可以成功导入10,000,000行数据,但是在之后出现了错误。
char(10)
这样的终止符并不常见。可以尝试'\n'
或'\r\n'
- 同时,调查产生该文件的程序和操作系统可能也会有所帮助。 - Aaron BertrandLastRow
),您可以使用二进制分割快速缩小范围 - 取文件中的行数并设置LastRow = <该数字的一半>
- 如果仍然出现错误,请将其减半并重试。很有可能是数据的第一行,并且也可能仅仅是因为您还没有将ROWTERMINATOR
与文件中实际的行终止符匹配。您尝试过\n
或\r\n
吗? - Aaron Bertrand