我有大约40多个excel文件要导入到SQL Server 2012.导入向导是一个很棒的工具,但它只允许我一次导入一个文件。
我想避免使用SSIS,因为导入应该相对容易 - 基本上它只是直接复制粘贴,Excel文件中的第一行是列名,Excel文件名=表名。
有没有简单的方法来实现这个目标?
编辑:由于列会经常更改,我想避免手动创建表。该向导非常棒,因为它会自动为我创建表格。
答案 0 :(得分:1)
您可以使用OpenRowSet来完成。可以在查询的FROM子句中引用OPENROWSET函数,就好像它是表名一样。
使用以下SELECT语句和OPENROWSET函数
读取excelSELECT *
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
这就是我在做什么。