我正在嘗試使用批量插入上傳一個非常大的數據文件(5M行)。所有列都只是varchars沒有轉換。所以格式文件很簡單...SQL Server批量插入固定寬度的文件失敗
11.0
29
1 SQLCHAR 0 8 "" 1 AccountId ""
2 SQLCHAR 0 10 "" 2 TranDate ""
3 SQLCHAR 0 4 "" 3 TransCode ""
4 SQLCHAR 0 2 "" 4 AdditionalCode ""
5 SQLCHAR 0 11 "" 5 CurrentPrincipal ""
6 SQLCHAR 0 11 "" 6 CurrentInterest ""
7 SQLCHAR 0 11 "" 7 LateInterest ""
...
27 SQLCHAR 0 8 "" 27 Operator ""
28 SQLCHAR 0 10 "" 28 UpdateDate ""
29 SQLCHAR 0 12 "" 29 TimeUpdated ""
但每一次,在某些時候,我得到了同樣的錯誤:
Msg 4832, Level 16, State 1, Line 1 Bulk load: An unexpected end of file was encountered in the data file. Msg 7399, Level 16, State 1, Line 1 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 1 Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
我曾嘗試以下:
Bulk Insert
[TableName] From 'dataFilePPathSpecification'
With (FORMATFILE = 'formatFilePPathSpecification')
但大約5-6分鐘後出現錯誤,並且沒有插入任何數據。
當我添加BatchSize參數時,在接近文件結尾的很長時間之後,除了極少數行已經插入成功之外,我得到了錯誤。
Bulk Insert
[TableName] From 'dataFilePPathSpecification'
With (BATCHSIZE = 200,
FORMATFILE = 'formatFilePPathSpecification')
當我設置BATCHSIZE到2000年它運行得更快,(更少,更大的transacxtions我認爲),但它仍然失敗。
這是否與大容量插入如何識別文件結尾有關?如果是這樣,我需要對格式文件進行修復?
我的數據文件是一個固定寬度的文件,沒有字段終止符,但是你是什麼意思的'線路'和'行'終止符,這是同樣的事情,不是? - 或者你只是在說錯話? –
手指比腦子快。 :) –
認爲是這樣的...那麼你說得對,那就修正了它......但是我必須爲行(最後一個字段)終結符「\ r \ n」 –