2016-11-11 75 views
1

我試圖在SQL Server中運行以下命令,它不工作:批量插入在SQL服務器失敗「列太長」

bulk insert dbo.Sales 
from 'C:\Users\sram1\Downloads\SalesFile20161103\SALECOPY.TXT' 
with 
(
    FIRSTROW = 1, 
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '0x0a' 
) 

這裏是印刷錯誤信息:

Msg 4866,Level 16,State 1,Line 131
批量加載失敗。數據文件中第1行第1列的列太長。驗證字段終止符和行終止符是否正確指定。

Msg 7399,Level 16,State 1,Line 131
鏈接服務器「(null)」的OLE DB提供程序「BULK」報告了錯誤。提供者沒有提供任何關於錯誤的信息。

Msg 7330,Level 16,State 2,Line 131
無法從鏈接服務器「(空)」的OLE DB提供程序「BULK」中獲取一行。

我看着整個StackOverflow,看到我應該改變rowterminator,我已經嘗試'0x0a'和'\ r \ n'。我的數據是用製表符分隔的,但看起來在某些情況下,製表符是2個空格,其他時間更多,其他時間更少。這可能是問題的根源嗎?如果是這樣,我該如何解決它?

+0

它是製表符,即ascii字符9,還是空格?如果選項卡已被轉換爲空格,那麼它根本找不到任何分隔符。 –

回答

1

我的數據是製表符分隔,但現在看來,在某些情況下,標籤是2位

沒有一個製表符不能是兩個空格。 製表符分隔並不意味着「數據在屏幕上顯示時向上」。這意味着每列值之間有一個ASCII tab字符。

如果這是一次性事情,您可以將數據導入到Excel中,並將其導出爲製表符分隔。如果這是一件普通的事情,那麼您需要學習如何檢查文件以查找非打印字符,更改行結束符以及修改分隔符。

HTH。