2017-04-19 67 views
1

我有超過50個Excel文件,我想將它們中的每一個導入到SQl服務器中的新SQL表中,該表的名稱是Excel的名稱文件 我怎樣才能實現使用SSIS?使用SSIS將每個Excel文件導入新的SQL表

每個文件都有自己的列名。所以我需要一種方法來循環在文件夾中的每個文件,並獲得每個文件的數據到新的SQL表

+1

這可能會幫助你:https://www.codeproject.com/Articles/368530/Dynamic-Excel-file-loading-with-SSIS –

+0

這很有趣,但這不是我要找的 – LattaliAhmed

+0

這可能會成爲BIML的一份工作,具體取決於學習BIML是否更快,或者更快地通過手工創建每個數據流。 –

回答

1

這只是給你一個大致的想法可以做什麼。

導入之前,在SQL Server中創建一個臨時表

CREATE TABLE dbo.ExcelStaging 
(LineId INT NOT NULL IDENTITY(1,1) 
, FileLine VARCHAR(2000) 
, FileName VARCHAR(50) 
) 

截斷臨時表中每個文件。

創建腳本任務,讀取您的文件的每一行,並插入到登臺表格「FileLine」中。 LineId = 1應始終保存原始文件列標題。你必須小心選擇哪個分隔符,逗號分隔符或固定寬度?

一旦文件加載到表中,執行SQL任務 - 一個存儲過程

一個。基於LineID = 1的文件名和FileLine,創建一個新的SQL表。新表可能看起來很醜 - 每個列數據類型都是varcher,因爲不知道每個字段的數據類型是什麼。

b。插入到新表中選擇FileLine的子字符串作爲臨時表中的列。這裏你選擇的分隔符將決定你如何爲每一列進行子串處理。

+0

不錯的想法,但我需要保持列數據類型與Excel相同 – LattaliAhmed

+0

好的,您需要在導入文件之前創建表。通過讀取文件名和第一行文件內容,您或計算機如何確定哪些數據類型? – Wendy

+0

SQL服務器中的導入/導出嚮導可以做到這一點,我的目標是在SSIS中做同樣的事情,而無需手動創建每個表。 – LattaliAhmed

相關問題