我正在尝试从12个不同的文件中自动导入数据,每个文件有6-10张。是否存在一个过程,通过该过程,“选定工作表”只能从每个文件中自动提取数据,并将其加载到单个文件(或SQL表)中。
示例:
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
非常感谢任何帮助。
答案 0 :(得分:4)
选项1:SSIS
如果您尝试每天/每周/每月运行一个重复过程,我建议使用Integration Services 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 System驱动程序:数据连接组件” “如果没有安装https://www.microsoft.com/en-us/download/details.aspx?id=23734
第2步:启用Ad Hoc Distributed Queries
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:向导 如果这是一次性过程,您可以使用向导
答案 1 :(得分:0)
尝试胡安建议的内容,但是这样做:
SELECT * FROM [SheetName$A1:B2]
这对你有用吗?