我正在进行批量插入:
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行,之后就会发生错误
发布于 2012-10-30 04:29:17
要定位麻烦的行,请使用errorfile说明符。
BULK INSERT myData
FROM 'C:\...\...\myData.csv'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
ERRORFILE = 'C:\...\...\myRubbishData.log'
);
myRubbishData.log将包含有问题的行,一个配套文件myRubbishData.log.txt将为您提供行号和文件中的偏移量。
配套文件示例:
Row 3 File Offset 152 ErrorFile Offset 0 - HRESULT 0x80004005
Row 5 File Offset 268 ErrorFile Offset 60 - HRESULT 0x80004005
Row 7 File Offset 384 ErrorFile Offset 120 - HRESULT 0x80004005
Row 10 File Offset 600 ErrorFile Offset 180 - HRESULT 0x80004005
Row 12 File Offset 827 ErrorFile Offset 301 - HRESULT 0x80004005
Row 13 File Offset 942 ErrorFile Offset 416 - HRESULT 0x80004005
发布于 2012-05-09 06:19:12
有趣,有趣,有趣。我还没有找到调试这些问题的好方法,所以我使用暴力破解。也就是说,FirstRow和LastRow选项非常有用。
从LastRow =2开始并继续尝试。将结果加载到一个可以随时截断的一次性表中。
而且,您还应该记住,第一行也可能会给您带来问题。
发布于 2015-10-29 04:48:30
我有一个使用批量导入的csv文件
BULK INSERT [Dashboard].[dbo].[3G_Volume]
FROM 'C:\3G_Volume.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '","',
ROWTERMINATOR = '\n'
)
GO
我通常使用这个脚本,它没有问题,但在极少数情况下。
我遇到这个错误..
链接服务器"(null)“的OLE DB访问接口"BULK”报告了一个错误。该访问接口未提供有关该错误的任何信息。
通常,当最后一行有空值(Null)时就会发生这种情况。
您需要在MS access数据库中链接csv文件以检查数据。(如果您的csv不超过140万行,您可以在excel中打开它)
因为我的数据大约有300万行,所以我需要使用access db。
然后用空格检查最后一行的数量,并将空行的数量减去csv的总行数。
如果末尾有两个空白行,总行数为30000005,脚本将如下所示。
BULK
INSERT [Dashboard].[dbo].[3G_Volume]
FROM 'C:\3G_Volume.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '","',
ROWTERMINATOR = '\n',
Lastrow = 30000003
)
GO
干杯..。马赫博伊
https://stackoverflow.com/questions/10507162
复制相似问题