gpt4 book ai didi

csv - 导入大型 CSV 文件的最佳实践

转载 作者:行者123 更新时间:2023-12-03 05:53:51 24 4
gpt4 key购买 nike

我的公司每个月都会收到一组包含银行帐户信息的 CSV 文件,我需要将其导入数据库。其中一些文件可能非常大。例如,一篇约33MB,约65,000行。

现在我有一个 symfony/Doctrine 应用程序 (PHP),它可以读取这些 CSV 文件并将它们导入数据库。我的数据库有大约 35 个不同的表,在导入过程中,我将这些行分成组成对象并将它们插入到数据库中。这一切都运行得很好,只是速度(每行大约需要四分之一秒)并且占用大量内存。

内存使用率太低,我不得不拆分 CSV 文件。一个 20,000 行的文件勉强能放进去。当它接近尾声时,我的内存使用率约为 95%。导入 65,000 行文件根本不可能。

我发现 symfony 是构建应用程序的一个特殊框架,我通常不会考虑使用其他任何东西,但在这种情况下,我愿意以性能的名义把我所有的先入之见抛到九霄云外。我不致力于任何特定的语言、DBMS 或任何东西。

Stack Overflow 不喜欢主观问题,因此我将尝试使其尽可能不主观:对于那些不仅有意见而且有导入大型 CSV 文件的经验的人来说,您过去使用过哪些成功的工具/实践?

例如,您是否只使用 Django 的 ORM/OOP 而没有遇到任何问题?或者您是否将整个 CSV 文件读入内存并准备一些巨大的 INSERT 语句?

再说一次,我想要的不仅仅是意见,而是过去对您实际有效的东西。

编辑:我不仅仅是将 85 列 CSV 电子表格导入到一个 85 列数据库表中。我正在规范数据并将其放入数十个不同的表中。因此,我不能只使用 LOAD DATA INFILE(我使用的是 MySQL)或任何其他仅读取 CSV 文件的 DBMS 功能。

此外,我无法使用任何 Microsoft 特定的解决方案。

最佳答案

如果我没有完全正确理解您的问题,请原谅我,但您似乎只是想将大量 CSV 数据导入 SQL 数据库。您是否有任何理由想要使用 Web 应用程序或其他代码将 CSV 数据处理到 INSERT 语句中?我已成功使用 SQL Server Management Studio 和 BULK INSERT 语句将大量 CSV 数据导入 SQL Server Express(免费版)。一个简单的批量插入看起来像这样:

BULK INSERT [Company].[Transactions]
FROM "C:\Bank Files\TransactionLog.csv"
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n',
MAXERRORS = 0,
DATAFILETYPE = 'widechar',
KEEPIDENTITY
)
GO

关于csv - 导入大型 CSV 文件的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com