2017-07-26 63 views
0

我試圖用使用大容量插入SQL Server中加載數據 -批量插入不處理無效的文件

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

但在這個文件中,我有頭只(均值0的記錄),那麼它的下面給出錯誤投擲: 消息4832,級別16,狀態1,行86 批量加載:在數據文件中遇到意外的文件結尾。 Msg 7399,級別16,狀態1,行86 鏈接服務器「(空)」的OLE DB提供程序「BULK」報告了錯誤。提供者沒有提供任何關於錯誤的信息。 Msg 7330,Level 16,State 2,Line 86 無法從鏈接服務器「(null)」的OLE DB提供程序「BULK」中獲取一行。

每當我用數據其裝載加載...

我們可以處理沒有錯誤0記錄文件。??

感謝

回答

1

你可以把在在try..catch BULK INSERT但是你必須運行,否則它作爲動態查詢在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 
0
BULK INSERT CUSTOMERE 
    FROM 'F:\TEMPP\Invoice_1500645000008_24072017_1127.csv' 
    WITH 
    (
     FORMATFILE = 'F:\TEMPP\Invoice.fmt' 
    ); 
+0

歡迎堆棧溢出!感謝您的代碼片段,它可能會提供一些即時的幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

+0

還必須有鏈接服務器的批量許可 –

+0

goto sql server mng studio和object explorer_server object_linked server_然後獲取屬性 –