将多个Excel文件/工作表导入到SQL表中

我有大约100个xlsx文件,每个文件都有1-7张。 每个文件和工作表具有与我想要将所有内容导入到的表相同的列。

我可以成功地使用这个:

SELECT * FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\0.xlsx', 'SELECT * FROM [sheet1$]' ) 

要么

 SELECT * FROM OPENDATASOURCE( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="C:\0.xlsx"; Extended properties=Excel 8.0')...Sheet1$ 

但是,我怎样才能从一个文件导入多个工作表?

  1. 为Excel文件创build链接的服务器
  2. 使用sp_tables_ex来发现提供程序返回的表(通常这应该是工作表名称,但可能取决于提供程序实现)

链接服务器

 EXEC sp_addlinkedserver @server = 'ExcelServer1', @srvproduct = 'Excel', @provider = 'Microsoft.Jet.OLEDB.4.0', @datasrc = 'C:\Test\excel-sql-server.xls', @provstr = 'Excel 8.0;IMEX=1;HDR=YES;' EXEC sp_dropserver @server = N'ExcelServer1', @droplogins='droplogins'