合并Excel文件数并加载到SQL数据库

时间:2014-04-30 09:21:30

标签: sql-server merge

我正在尝试合并一些文件。大约40,000个excel文件都具有完全相同的格式(列等)。

我曾尝试通过CMD运行合并命令,它已将它们合并到一个点,但它已合并的CSV文件由于其大小而无法打开。

我想要找出的是合并如此大量文件然后将它们加载到SQL服务器的过程的最佳过程。

是否有任何可能需要定制和构建的工具或东西?

1 个答案:

答案 0 :(得分:0)

我不知道这方面的工具,但我的第一个想法就是这个,假设您对Transact SQL有经验:

  • 打开命令shell,切换到存储Excel文件的文件夹,然后输入以下命令:dir *.xlsx /b > source.txt

这将创建一个名为“source.txt”的文本文件,其中包含所有Excel文件的名称(以及仅名称)

  • 在SQL Server表中导入此文件,即称为“sourcefiles”

  • 创建一个包含游标的新存储过程。游标应逐行读取循环中的表“sourcefiles”,并将实际重写的Excel文件的名称存储在变量中,即称为“@FileName”

  • 在这个循环中为每个重读的Excel文件执行这样的sql语句:

    SELECT * INTO dbo.YourDatabaseTable
    FROM   OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=@FileName',
    'SELECT * FROM [YourWorkSheet$]')
    
  • 让光标读取下一行

根据您的需要替换“YourDataseTable”和“YourWorkSheet”。

@FileName必须包含Excel文件的完整路径。

也许你必须在执行sql命令之前下载Microsoft.ACE.OLEDB.12.0-Provider。

希望,这有助于考虑您的进一步步骤

迈克尔

编辑:在this网站上查看可能的错误