【问题标题】:Import Multiple Excel files to SQL Server将多个 Excel 文件导入 SQL Server
【发布时间】:2015-03-08 05:32:23
【问题描述】:

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

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

有什么简单的方法可以实现吗?

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

【问题讨论】:

标签: sql sql-server excel import


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以使用 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

    【讨论】:

    • 我收到一条错误消息:无法为链接服务器“(null)”创建 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的实例。
    • 要创建访问 Excel 电子表格的链接服务器,您必须执行 sp_addlinkedserver。关注technet.microsoft.com/en-us/library/ms175866(v=sql.105).aspx
    • Msg 15028,级别 16,状态 1,过程 sp_addlinkedserver,第 82 行 服务器“EXCEL”已经存在。消息 7302,级别 16,状态 1,第 2 行无法为链接服务器“(null)”创建 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的实例。
    • 当我执行sp_addlinkedserver时,它是成功的。但后来我仍然收到Cannot create an instance of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".。当我再次尝试重新执行时,它说链接已经存在
    【解决方案3】:

    这可能比您想对您的问题投入更多的研究,但您也可能会考虑使用 BIML 来编写繁琐且大量类似的包的脚本。

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

    【讨论】:

      【解决方案4】:

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

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

      这就是我正在做的。

      【讨论】:

      • 欢迎来到 Stack Overflow!虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      相关资源
      最近更新 更多