2015-12-31 23 views
2

我是否應該重複使用相同的平面文件連接管理器,或者我應該爲每個要導入的文件放置單獨的平面文件連接管理器?使用SSIS將不同的csv文件加載到不同的SQL Server表中的最佳方式是什麼?

說明:

我有不同的結構30個CSV文件,我需要將這些文件導入到SQL Server數據庫。

目前我正在爲每個平面文件源使用單獨的平面文件連接管理器。然後使用OLEDB目標將數據推入SQL Server數據庫。

我應該重複使用同一個Flat File Connection Manager嗎?

你能指導我 - 如何做到這一點?任何鏈接都會有所幫助。

+0

這些答案是否適合您? –

+0

將30個CSV文件映射到30個表格是否正確?如果這樣獨立的連接將成爲未來的路,否則你可能需要考慮一些預處理(取決於文件大小)以使它們變成相同的格式 –

回答

5

由於您的文件之間的結構不同,您應該使用單獨的連接。這使您可以爲每個文件類型正確定義列名稱,大小和數據類型。

+0

聽起來像是最好的選擇,過去我已經這樣做了 –

1

而不是創建30間平面文件的連接只是在爲文件名的表達式中使用一個Foreach循環容器內傳遞的。

爲了解決您的CSV文件格式不同的問題,當您創建平面文件連接時,請選擇Ragged右邊而不是分隔符,這會將文件中的每一行視爲一個非常寬的列而不是多個字段(確保你使列寬足以處理你的文件)。

然後,您可以將平面文件源的輸出發送到腳本組件,您可以在其中放置所有邏輯來處理文件。使用正則表達式或分割將每一行轉換回字段,然後使用C#的全部功能處理每一行。腳本組件也可以有多個輸出,所以你甚至可以像使用條件分割一樣使用它。

這可能看起來像一點點工作(取決於你的文件是什麼樣的,以及你如何處理它們),但最終的結果是少移動的部分。

+0

如果我當前使用批量插入加載文件,如果我必須處理C#腳本中的每一行,它是否會顯着減慢我的過程? WouId我只是使用腳本創建一致的格式,然後仍然可以批量插入?現在我需要爲一個文件處理多種格式,這是通過其中一個表格的列中的值表示的。 – Maa421s

相關問題