从不同的Excel工作表自动导入TSQL表

时间:2016-11-23 21:59:47

标签: excel-vba tsql automation import-from-excel vba

我正在尝试从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

非常感谢任何帮助。

2 个答案:

答案 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]

这对你有用吗?