从不同的 Excel 工作表自动导入 SQL 表
Posted
技术标签:
【中文标题】从不同的 Excel 工作表自动导入 SQL 表【英文标题】:Auto Importing into TSQL Table from different Excel sheets 【发布时间】:2016-11-23 21:59:46 【问题描述】:我正在尝试从 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
任何帮助将不胜感激。
【问题讨论】:
如果您安装了 sql server,您还将拥有“导入和导出数据向导”,可通过开始菜单访问。这就是我会使用的。 “导入和导出”一次可以处理一个文件,而且它不允许我选择数据行 - 我的标题在第 5 行,数据从第 6 行开始到第 48 行 - 其余所有内容第 48 行下是备份数据或公式。我怎样才能只选择第 5-48 行和 5 作为我的标题?...谢谢 应该有一个“要跳过的标题行”选项。导入/导出数据向导只是制作 ssis 包的快捷方式,所以如果您使用 Juans 方法,您还会发现这是数据源上的一个选项。 【参考方案1】:选项 1:SSIS
如果您尝试每天/每周/每月运行一个重复的过程,我建议使用集成服务 SSIS
这是一个很好的教程: https://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server-10-steps-to-follow/
您可以使用 SQL 代理运行此作业。
选项 2:OLEDB 连接
第一步:下载《2007 Office System 驱动程序:数据连接组件》 " 如果没有安装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\***\A.xlsx; Extended Properties=''EXCEL 12.0;HDR=NO;IMEX=1'
,'SELECT * FROM [Sheet1$]') AS exl
选项 3:向导 如果这是一次性过程,您可以使用向导
【讨论】:
谢谢 Juan .. 但这不允许我选择数据行 - 我的标题在第 5 行,数据从第 6 行开始到第 48 行 - 第 48 行下的其余所有内容都是备份数据或公式.我怎样才能只选择第 5-48 行和 5 作为我的标题?...谢谢【参考方案2】:试试 Juan 的建议,但要这样做:
SELECT * FROM [SheetName$A1:B2]
这对你有用吗?
【讨论】:
以上是关于从不同的 Excel 工作表自动导入 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章
C# winform中如何通过新建EXCEL工作簿把SQL SERVER数据库中多张表导入EXCEL不同的sheet当中啊
如何将 Excel 数据从不同的工作表导出到 SQL-SERVER 数据库?