【发布时间】:2019-10-17 18:21:12
【问题描述】:
我想读取一个大小为 250 Mb 且行数超过 300 000 的 Excel 文件。因此,当我尝试在 SSIS 的 Excel 源代码中处理它时,需要花费太多时间,最后无法处理。谁能告诉我如何将大文件拆分成小文件或任何其他可以提供帮助的方法?
【问题讨论】:
标签: sql-server excel ssis etl sql-server-data-tools
我想读取一个大小为 250 Mb 且行数超过 300 000 的 Excel 文件。因此,当我尝试在 SSIS 的 Excel 源代码中处理它时,需要花费太多时间,最后无法处理。谁能告诉我如何将大文件拆分成小文件或任何其他可以提供帮助的方法?
【问题讨论】:
标签: sql-server excel ssis etl sql-server-data-tools
SQLCMD 更好,因为超时时间要长得多。但是您必须将 Excel 保存为 CSV,我不知道您是否可以这样做。
如果您有一个 CSV 文件(即 BulkDataFile.csv)并且您创建了一个这样的文件:
BULK INSERT dbo.TableForBulkData
FROM 'C:\BulkDataFile.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
然后你可以使用SQLCMD -E -I import.sql(你已经将文件保存为import.sql)
【讨论】:
最好的方法是按块读取数据,我这样做是为了从 SQL 数据库中读取巨大的表。但是为了读取大的 excel 文件,我在 C# 应用程序中实现了这个,而不是在 SSIS 中,因为它更复杂。我将提供一些链接以获取更多信息:
如果您只需要使用 SSIS 执行此操作,我可以稍后提供类似于我在上面第一个链接 (SQLite) 中提供的详细答案。
最近我在 Git-Hub 上开始了一个新项目,这是一个使用 C# 开发的类库。您可以使用它使用架构映射方法将表格数据从 excel、word、powerpoint、text、csv、html、json 和 xml 导入到具有不同架构定义的 SQL Server 表中。它提供了导入大型 excel 文件的能力。在以下位置查看:
您可以按照此 Wiki 页面获取分步指南:
【讨论】: