批量插入不处理无效文件

时间:2017-07-26 10:05:44

标签: sql-server bulkinsert

我正在尝试使用 -

在sql server中使用Bulk Insert加载数据
BULK INSERT CUSTOMERE FROM  'F:\\TEMPP\\Invoice_1500645000008_24072017_1127.csv' WITH (FORMATFILE = 'F:\\TEMPP\\Invoice.fmt')

但是在这个文件中我只有Header(表示0记录)然后它下面给出了错误: Msg 4832,Level 16,State 1,Line 86 批量加载:数据文件中遇到意外的文件结尾。 消息7399,第16级,状态1,第86行 OLE DB提供程序" BULK"对于链接服务器"(null)"报告错误。提供商未提供有关错误的任何信息。 Msg 7330,Level 16,State 2,Line 86 无法从OLE DB提供程序中获取行" BULK"对于链接服务器"(null)"。

每当我加载数据加载时......

我们可以处理0条记录文件而不会出错。??

由于

2 个答案:

答案 0 :(得分:1)

你可以将BULK INSERT放在TRY..CATCH中,但是你必须将它作为动态查询运行,否则TRY..CATCH不会捕获错误。这使您可以选择记录有关空文件的信息。

BEGIN TRY
 DECLARE @cmd varchar(1000)
 SET @cmd = 'BULK INSERT CUSTOMERE FROM ''F:\TEMPP\Invoice_1500645000008_24072017_1127.csv'' WITH (FORMATFILE = ''F:\TEMPP\Invoice.fmt'')
 EXECUTE (@cmd)
END TRY

BEGIN CATCH
END CATCH

答案 1 :(得分:0)

 BULK INSERT CUSTOMERE 
     FROM 'F:\TEMPP\Invoice_1500645000008_24072017_1127.csv'
     WITH 
     (
        FORMATFILE = 'F:\TEMPP\Invoice.fmt'
     );