2017-06-19 221 views
3

我想使用ssis包將數據導入到sql server。我有一個名爲description的列,它有一個690個字符的單元格。從excel導入數據到sql server

由於SSIS無法確定所需的最大長度,因此我得到一個截斷錯誤。我試着改變excel源連接的輸出列屬性,但沒有幫助。但是,當我將最大長度的單元移動到第一行時,它完美地工作(因爲ssis包決定了前8行的最大長度)。

因爲我想讓這個過程自動化,所以我不想每次都修改excel表格。我已閱讀了有關更改ssis讀取的行集數量,但尚未能弄清楚如何去做的問題。

任何類型的幫助,將不勝感激。

+0

我相信你正在尋找在你的數據流的數據轉換步驟。您應該能夠將輸出列指定爲所需大小的字符串(不要忘記更新映射以使用新列)。 –

+1

是否需要數據轉換?它以文本/字符串格式進入。它需要ntext數據類型,但需要考慮nvarchar,即使我增加了nvarchar的字符數量也沒有幫助。 – Rahul

+0

@JacobH嘿所以當我使用數據轉換。它說一個新的錯誤說無法檢索列描述的長數據。 – Rahul

回答

1

問題的答案是,你去Windows註冊表,並更改Excel連接管理器,以查看超過8行,以確定列數據類型和長度,從而解決問題。

你去windows的註冊表在運行控制檯鍵入「regedit」並當你在Windows註冊表您按照

HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 ->Engines -> Excel -> and then set the typeguessrows to 0, so that it can parse through the entire file instead of the top 8 rows. 
+0

即使是你的,你也必須接受這個答案 – Hadi

+0

@哈迪是先生/女士。它不會讓我2天。 – Rahul

0

您需要指定Excel Source輸入列的長度。

在您的SSIS包中,右鍵單擊數據流任務中的Excel源,然後單擊「高級編輯器Excel源」。接下來將該列的數據類型和長度從其默認值更改。

如果您使用的是VS2015或更高版本,請右鍵單擊Excel Source和clic屬性。在Show Advance Editor鏈接的屬性clic的底部,並更改Input and Output Properties選項卡中的長度。

希望它適合你。

+0

它不起作用。我改變了輸出列的數據類型和長度。但外部列不會改變。我也不能改變這些值。 這是你推薦的嗎? – Rahul

+1

問題在於excel源碼認爲該列最大長度爲255,它通過前8行。你知道任何解決方法,而不必去Windows註冊表。 – Rahul

+0

您需要更改這兩個值,輸出柱長度和外部柱長。嘗試一下。 – MagdielAybar