2012-12-13 72 views
1

我正在從Excel表導入數據。我有以下問題所困擾 -從Excel導入數據時出現SQL錯誤

  • 執行(錯誤)消息錯誤0xc020901c:數據流任務1:輸出有與輸出列「智力」(21)「的錯誤的Excel 源輸出「(9)。返回的列狀態爲:「文本被截斷,或者目標代碼頁 中的一個或多個字符不匹配。」 (SQL Server導入和導出嚮導)

  • 錯誤0xc020902a:數據流任務1:「輸出列‘智力’(21)」失敗,因爲發生了截斷,並在「輸出列‘智力 截斷行處置’ (21)「 指定截斷失敗。指定組件的指定對象的 上發生截斷錯誤。 (SQL Server導入和 導出嚮導)

  • 錯誤0xc0047038:數據流任務1:SSIS錯誤代碼DTS_E_PRIMEOUTPUTFAILED。組件「Source - MainSheetData $」(1)上的PrimeOutput方法返回錯誤代碼0xC020902A。當管道引擎調用PrimeOutput()時,組件返回失敗代碼。 失敗代碼的含義由組件定義,但 錯誤是致命的,並且管道停止執行。在此之前發佈的消息可能有錯誤 以及有關失敗的更多信息。 (SQL Server導入和導出嚮導)

回答

1

的第一個錯誤是告訴你的智力列源數據是比你的目標列長或包含charachers你的目標列不能接受的。

第二個錯誤是告訴你智能列比您的目標列長,因此它的失敗。我期望這是真正的問題。

您可以

  • 擴大目標列的大小,以覆蓋較大的輸入 或
  • 開關截斷「忽略失敗」的組件的錯誤輸出
+0

我已經將它更改爲nvarchar(max),但仍然錯誤是相同的。 – Kumar

+0

我也做了同樣的「IGnore失敗」但沒有成功。 – Kumar

+0

哪個組件失敗?它是你的來源,目標還是中介組件?如果它的源代碼,您將不得不修改源代碼中輸出列的定義,而不是您的目標數據庫 –

0

我遇到了同樣的問題,雖然我嘗試了很多來自搜索的建議,但對我而言,選項是將excel文件轉換爲CSV,並使用bulk insert命令。

這繞過了需要編輯映射這是不適合我。當我更改字段類型時,我有一個字段沒有更新。下面

代碼從this answer

BULK INSERT TableName 
     FROM 'C:\SomeDirectory\my table.txt' 
      WITH 
    (
       FIELDTERMINATOR = '\t', 
       ROWTERMINATOR = '\n' 
    ) 
GO 
0

使用CSV導入是困難的,因爲導入過程中不知道任何字段的最大長度。因此,當它碰到比初始列長度長的行時,就會出錯。

只需將您的CSV文件保存爲一個Excel工作簿,並重新導入。您需要刪除上次在創建失敗之前創建的現有表。

由於這是Excel中,它可以在創建表時獲得正確的字段長度。

+0

John - OP表示他已經在excel中。 – Kevin

3

我被撞在牆上的頭撞到了同樣的確切的錯誤。

嘗試導入到MS Access和然後導入到SQL Server。

0

我得到了同樣的錯誤,而從Excel導入到SQL Server 2008,我能夠從XLSX到CSV導出然後導入CSV文件到SQL Server來做到這一點。是的,我不得不手動調整列長度,但它工作得很好!

0

我有同樣的問題,不得不手動通過Excel來找到問題。一次性節省,如果您點擊底部的報告 - >查看報告,它將打開一個新窗口。如果您一直滾動到報表底部,它會告訴您有多少行被處理。這並不一定意味着問題出現在下一行,但至少您可以在此之前跳過所有行。

我確實在Excel接下來會採取只將融入SQL(即LEFT([專欄],255個字符的數量),並截斷其餘部分。

這是不理想的,但它在工作我的情況。

0

Export

您需要更改「上的錯誤」選項,忽略和「關於截斷」選項中查看數據類型爲忽略映射。 這將解決這個問題。

0

我不當然,如果有人試圖這樣與否:

複製從Excel的.xls或任何該文件的內容Excel格式它是在目前並粘貼到新的Excel文件中的值。以.xlsx格式保存該文件,然後嘗試再次使用sql server進行導入。

這將是一個成功!

1

原來只檢查前8行左右的Excel的sheet..so如果決定長度是225,後來遇到超過225個字符出現錯誤,我做了什麼來解決這個問題是使第一包含最糟糕的情況(最大的一切)的假行和問題解決!

相關問題