当前位置: 首页 > 面试题库 >

确定在BULK INSERT中导致“文件意外结束”错误的ROW?

严子默
2023-03-14
问题内容

我正在批量插入:

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)".

有没有办法知道在哪个ROW上发生此错误?

我能够导入10,000,000行而不会出现问题,此后会发生错误


问题答案:

要找到麻烦的行,请使用错误文件说明符。

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


 类似资料:
  • 问题内容: 我有一个SQL查询,当将其放入函数中时,它将停止处理此错误消息。从功能中删除它会使它再次开始工作。 为什么是这样? 问题答案: 缩进的Heredoc分隔符将其破坏。说: 代替

  • 问题内容: 每当我编写包含ArrayUtil的代码时,都会导致意外错误: 我使用Eclipse编写代码,“ ArrayUtil”下始终有一个红色下划线。我究竟做错了什么? 问题答案: 您的ArrayUtil属于哪个软件包?没有这些信息,没人能确定地回答。 你到这里了吗?如果是,则您的签名看起来正确。您可能尚未导入它,或者该类不在您的CLASSPATH中。Eclipse告诉您更正其中一项。

  • 问题内容: 我收到一个错误: 使用此代码: 有什么问题? 问题答案: 您应该避免这种情况(在代码末尾): 和这个: 您不应该将方括号直接放在open / close 标记附近,但要用空格隔开: 也避免和使用

  • 我有以下代码: 它在我的大多数服务器上运行良好,但在其中一个服务器上,我收到一个错误: PHP解析错误:语法错误,文件在第19行 /var/www/dokuwiki/lib/plugins/bez/tpl/issue_causes.php中意外结束, 这个代码有什么问题? 整个文件issue_cause.php:

  • 我读过任何与此相关的问题,答案说这是因为“丢失了相当多的分号”。我已经检查了我的代码,认为没有丢失分号...但是这个问题仍然发生在我身上。我的朋友,用和我一样的代码,不会遇到同样的问题。 这是我的代码(第115行是

  • 我得到了的意外结束。代码对我来说很好,我错过了什么? 安慰: