【发布时间】:2014-04-30 09:21:30
【问题描述】:
我正在尝试合并多个文件。大约 40,000 个格式完全相同的 excel 文件(列等)。
我尝试通过 CMD 运行合并命令,该命令已将它们合并到一个点,但它合并到的 CSV 文件由于其大小而无法打开。
我试图找出合并如此大量文件的最佳过程,然后将它们加载到 SQL Server 中的过程。
是否有任何工具或东西可能需要定制和构建?
【问题讨论】:
标签: sql-server merge
我正在尝试合并多个文件。大约 40,000 个格式完全相同的 excel 文件(列等)。
我尝试通过 CMD 运行合并命令,该命令已将它们合并到一个点,但它合并到的 CSV 文件由于其大小而无法打开。
我试图找出合并如此大量文件的最佳过程,然后将它们加载到 SQL Server 中的过程。
是否有任何工具或东西可能需要定制和构建?
【问题讨论】:
标签: sql-server merge
我不知道这方面的工具,但我的第一个想法是,假设您对 Transact SQL 有经验:
dir *.xlsx /b > source.txt
这将创建一个名为“source.txt”的文本文件,其中包含所有 Excel 文件的名称(并且只有名称)
将此文件导入 SQL Server 表中,即称为“源文件”
创建一个包含游标的新存储过程。光标应该逐行读取您的表“源文件”,并将实际读取的 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 网站上查看可能的错误
【讨论】: