我有超過50個Excel文件,我想將它們中的每一個導入到SQl服務器中的新SQL表中,該表的名稱是Excel的名稱文件 我怎樣才能實現使用SSIS?使用SSIS將每個Excel文件導入新的SQL表
每個文件都有自己的列名。所以我需要一種方法來循環在文件夾中的每個文件,並獲得每個文件的數據到新的SQL表
我有超過50個Excel文件,我想將它們中的每一個導入到SQl服務器中的新SQL表中,該表的名稱是Excel的名稱文件 我怎樣才能實現使用SSIS?使用SSIS將每個Excel文件導入新的SQL表
每個文件都有自己的列名。所以我需要一種方法來循環在文件夾中的每個文件,並獲得每個文件的數據到新的SQL表
這只是給你一個大致的想法可以做什麼。
導入之前,在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的子字符串作爲臨時表中的列。這裏你選擇的分隔符將決定你如何爲每一列進行子串處理。
不錯的想法,但我需要保持列數據類型與Excel相同 – LattaliAhmed
好的,您需要在導入文件之前創建表。通過讀取文件名和第一行文件內容,您或計算機如何確定哪些數據類型? – Wendy
SQL服務器中的導入/導出嚮導可以做到這一點,我的目標是在SSIS中做同樣的事情,而無需手動創建每個表。 – LattaliAhmed
這可能會幫助你:https://www.codeproject.com/Articles/368530/Dynamic-Excel-file-loading-with-SSIS –
這很有趣,但這不是我要找的 – LattaliAhmed
這可能會成爲BIML的一份工作,具體取決於學習BIML是否更快,或者更快地通過手工創建每個數據流。 –