我準備格式文件基於This article批量插入不承認行終止
樣本數據的導入文本文件合格導入到SQL服務器:
"1000000"|"1100000"|"2017-02-26 00:00:00"|"CAT1"|"Item from CAT1"
"1000001"|"1100000"|"2017-02-26 00:00:01"|"CAT2"|"Item from CAT2"
"1000002"|"1100001"|"2017-02-26 00:01:02"|"CAT2"|"Item from CAT2"
"1000003"|"1100002"|"2017-02-26 01:02:03"|"CAT3"|"Item from CAT3"
我的格式文件:
13.0
6
1 SQLCHAR 0 0 "\"" 0 FIRST_QUOTE SQL_Latin1_General_CP1_CI_AS
2 SQLINT 0 4 "\"|\"" 1 transaction_id ""
3 SQLINT 1 4 "\"|\"" 2 user_id ""
4 SQLDATETIME 0 8 "\"|\"" 3 create_date ""
5 SQLCHAR 2 10 "\"|\"" 4 category SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 2 50 "\"\r\n" 5 item SQL_Latin1_General_CP1_CI_AS
導致:
批量加載失敗。行1,列6的數據文件中的列太長。驗證字段終止符和行終止符是否已正確指定。
我相當肯定的是,文件中包含\ r \ n(經過與十六進制編輯器顯示0X0D,0X0A),但忽略文本預選賽和格式的文件,我是隻能與
Bulk insert <table_name> from '\\path\to\file' with (fieldterminator='|', rowterminator='\n')
手動導入
只是使用'\ n',而不是'\ r \ n'。前者是'回車,換行'(aka,CRLF)。後者是'回車,回車,換行'(CRCRLF)。不知道是否真的能解決這個問題。 (僅供參考,'x0dx0a'是CRLF,所以也許你的報告文件格式不正確,實際的文件格式不正確?) – ps2goat
對不起,如果你已經檢查過了,但是有可能'item'的長度超過50? – SqlZim
@SqlZim是的,我通過嚮導導入它,但它很好。另外我相當確定源字段在另一個數據庫中也是varchar(50) – JagdCrab