如何使用带有查询的SQL而不是SSIS合并多个Excel文件?

问题描述 投票:0回答:2

我有10个具有相同数据结构的Excel文件。每个文件在Sheet1中都有名字和姓氏。但是文件名不同,并且没有模式。所有10个文件都位于同一文件夹中。

我想使用SQL合并所有10个文件并将其合并到一个SQL表中。有没有办法做到这一点。

Files path: C:\User\ferguson\excelfiles

Excel file 1 : name.xlsx
Excel file 2: names.xlsx
Excel file 3: details.xlsx
.
.
.
.
Excel file 10: info.xlsx

我想要一个单一的SQL表,并使用SQL QUERY记录所有文件中的所有数据。可以使用BULK Insert或其他方法完成吗?

任何帮助表示感谢

sql sql-server excel
2个回答
0
投票

考虑使用兼容的ODBC驱动程序或OLEDB提供程序来在所有工作簿上运行OPENROWSET查询,请考虑OPENROWSETOPENDATASOURCE。下面假设每个工作簿都有名为OPENDATASOURCEUNION的命名列,这些列从名为FirstName的工作表的LastName开始。

A1

或者,您可以使用提供程序版本:

Sheet1

可能甚至可以合并到一个电话中,连接到第一个工作簿:

SELECT * FROM
OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
           DBQ=C:\Path\To\File1.xlsx', 
           'SELECT [FirstName], [LastName] FROM [Sheet1$]')

UNION ALL

SELECT * FROM
OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
           DBQ=C:\Path\To\File2.xlsx', 
           'SELECT [FirstName], [LastName] FROM [Sheet1$]')
...

UNION ALL

SELECT * FROM
OPENROWSET('MSDASQL','DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
           DBQ=C:\Path\To\File10.xlsx', 
           'SELECT [FirstName], [LastName] FROM [Sheet1$]')

0
投票

尝试此方法您可以下载kutools等外部工具以获取excel或ablebits或其他任何工具来执行这些操作。它们具有出色的功能,并且有些日子是免费的。

© www.soinside.com 2019 - 2024. All rights reserved.