2012-01-12 44 views
0

究竟做「批量加載數據轉換錯誤(溢出)爲第1行,第5列(塊標識)平均的SQL Server批量加載錯誤消息4867

我想從一個CSV導入下面一行:

201-125,JAN12-201-MON-星期一01,20519311-JAN12-201-MON-週一-01, 里士滿,2620401

此列的格式flie線

5 SQLINT 0 4爲 「\ r \ n」 個9 BLOCKID 「」

如果更改爲BLOCKID從2620401到0的值,我不遇到這個問題。數據未使用bcp導出。

TIA。

+0

是否有在桌子上,IE參照完整性的任何約束上? – 2012-01-12 17:50:46

+0

只是典型的非空和主鍵約束。 – 2012-01-12 17:59:45

回答

1

的4你的字段長度不足以用於一個整數。嘗試使用12,這是默認值。

5 SQLINT 0 12 "\r\n" 9 BlockId "" 
+0

我懷疑是這樣,然後去http://msdn.microsoft.com/en-us/library/ms187745.aspx,並確認我應該使用4的長度。另外格式文件是使用現有表上的bcp創建的,如果我使用這些值直接針對表運行插入,它需要它。 – 2012-01-12 18:00:12

+0

S,這很有幫助,但我也必須更改數據類型字段。我決定詳細解釋這一點,以防其他人遇到同樣的問題。 MSDN沒有正確記錄這一點。 – 2012-01-12 19:01:33

0

這需要在MSDN上也規定了:

  1. 格式文件描述了被導入到數據庫中的數據。
  2. 使用BCP創建的格式文件通常需要進行修改,以得到數據的精確表示,如果使用BCP沒有導出該數據。 Bcp默認不會總是正確的。

在這種情況下,BCP創建以下行

5 SQLINT 0 4 "\r\n" 9 BlockId "" 

的格式文件中的我整場。

如果此數據文件是使用BCP出口,那麼這個領域將是一個SQLINT,因爲這是在數據庫中定義。

然而,這一數據沒有使用BCP創建。這只是一些手動創建的csv文件。因此,SQLINT的主機文件數據類型不正確。對於此類數據文件,請使用SQLCHAR的主機文件數據類型。然後,主機文件數據長度必須對應於表示該字段的最小字符長度中數據文件。如果此字段進入數據庫的[int]類型列,則對於主機類型數據長度使用值12保存。

所以需要這種修正的:

5 SQLCHAR 0 12 「\ r \ n」 9塊標識 「」