2016-11-23 103 views
1

我試圖從12個不同的文件中自動導入數據,每個文件有6-10張。是否有一個過程可以通過「選定工作表」僅從每個文件自動提取數據並將其加載到單個文件(或SQL表)中。自動從不同的Excel工作表導入到TSQL表中

實施例:

File A with Columns "Name" Column "Amount". 
File A has total of 4 sheets (2 sheets named "ABC Trend", "DEF Trend") 
File B - 6 sheets (2 sheets named "XXX Trend", "DEF Trend") 

輸出:

import into Table C (or File C - One Sheet) with 'Trend' data 

"Name", "Amount", "FromFile", "FromSheet" 
Jo,  56.3 ,  A ,  ABC Trend 
Mary, 16.3 ,  A ,  ABC Trend 
Dave, 26.3 ,  A ,  ABC Trend 
Jim,  26.3 ,  A ,  DEF Trend 
Mary, 16.3 ,  A ,  DEF Trend 
Dave, 26.3 ,  A ,  DEF Trend 
Shu,  16.3 ,  B ,  XXX Trend 
Marie, 16.3 ,  B ,  XXX Trend 
Tom,  26.3 ,  B ,  XXX Trend 
Jack, 26.3 ,  B ,  DEF Trend 
Ma,  16.3 ,  B ,  DEF Trend 
Doe,  26.3 ,  B ,  DEF Trend 

*Ideal would be to load into a SQL table 

任何幫助,將不勝感激。

+1

如果您安裝了sql server,您還可以通過「開始」菜單訪問「導入和導出數據嚮導」。這就是我會用的。 – CustodianOfCode

+0

「導入和導出」一次可以處理一個文件,並且不允許我選擇數據行 - 我的標題在第5行,數據從第6行到第48行 - 將第48行下的所有內容都保留爲備份數據或公式。我如何才能選擇第5行5-48作爲我的標題?..謝謝 –

+0

應該有'標題行跳過'選項。導入/導出數據嚮導只是製作ssis包的捷徑,所以如果使用Juans方法,您還會發現這是數據源上的一個選項。 – CustodianOfCode

回答

4

選項1:SSIS

如果你正在嘗試做一個重複的過程,每天/每週/每月運行,我會建議使用集成服務SSIS

這是一個很好的教程: https://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server-10-steps-to-follow/

您可以使用SQL代理運行此作業。

選項2:OLEDB連接

第1步:下載 「2007 Office系統驅動程序:數據連接組件 」 如果沒有安裝https://www.microsoft.com/en-us/download/details.aspx?id=23734

步驟2:啓用特設分佈式查詢

 EXEC sp_configure 'show advanced options', 1 
RECONFIGURE 
GO 

EXEC sp_configure 'ad hoc distributed queries', 1 
RECONFIGURE 
GO 


    EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1 
GO 

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1 
GO 

第3步:運行查詢

SELECT exl.name 
INTO #myExcelData 
FROM OPENROWSET ('Microsoft.Ace.OLEDB.12.0' 
,'Excel 12.0; Database=C:\Projects\StackOverflow\A.xlsx; Extended Properties=''EXCEL 12.0;HDR=NO;IMEX=1' 
,'SELECT * FROM [Sheet1$]') AS exl 

方案3:嚮導 如果這是一次性的過程中,你可以使用嚮導

+0

謝謝胡安..但是這不允許我選擇數據行 - 我的標題在第5行,數據從第6行到第48行 - 將第48行下的所有內容都保留爲備份數據或公式。我如何才能選擇5 - 5行作爲我的標題?..謝謝 –

0

嘗試什麼娟建議,但像這樣做:

SELECT * FROM [SheetName$A1:B2] 

這是否對你的工作?

相關問題