将多个Excel文件导入SQL Server

时间:2015-01-09 20:02:16

标签: sql sql-server excel import

我有大约40多个excel文件要导入到SQL Server 2012.导入向导是一个很棒的工具,但它只允许我一次导入一个文件。

我想避免使用SSIS,因为导入应该相对容易 - 基本上它只是直接复制粘贴,Excel文件中的第一行是列名,Excel文件名=表名。

有没有简单的方法来实现这个目标?

编辑:由于列会经常更改,我想避免手动创建表。该向导非常棒,因为它会自动为我创建表格。

4 个答案:

答案 0 :(得分:1)

您可以使用OpenRowSet来完成。可以在查询的FROM子句中引用OPENROWSET函数,就好像它是表名一样。

使用以下SELECT语句和OPENROWSET函数

读取excel
SELECT * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Source\Addresses.xls;IMEX=1',
                'SELECT * FROM [Sheet1$]')

要在不使用DTS的情况下将其导入SQL Server表,因为您可以使用SELECT语句读取数据,只需添加INTO子句即可将记录插入到新的SQL Server表中。

SELECT * 
INTO [dbo].[Addresses_NewTable]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=C:\Source\Addresses.xls;IMEX=1',
                'SELECT * FROM [Sheet1$]')

参考文章: - http://www.sql-server-helper.com/tips/read-import-excel-file-p03.aspx

答案 1 :(得分:0)

这可能比您想要解决的问题更多的研究,但您也可能会考虑使用BIML编写繁琐且众多类似软件包的脚本。

http://www.sqlservercentral.com/stairway/100550/ http://www.mssqltips.com/sqlservertip/3094/introduction-to-business-intelligence-markup-language-biml-for-ssis/

答案 2 :(得分:0)

我使用的一种解决方案是将多个Excel文件合并为一个包含多个工作表的文件。这可以通过运行VBA脚本(例如How to merge Excel files with VBA - thanks to Svetlana Cheusheva)然后使用SSMS导入向导将多张工作表加载到多个表中来完成。就我而言,我有160个文件,但它们不是很大(100至10000行),对我来说效果很好。

答案 3 :(得分:0)

使用Kutools for Excel将工作簿中的工作表合并到新工作簿中的一个工作表中,然后加载该工作表。

https://www.extendoffice.com/product/kutools-for-excel/merge-excel-wordbooks.html#a4

这就是我在做什么。