【问题标题】:SQL Importing Large CSV, Out of Memory ErrorSQL 导入大型 CSV,内存不足错误
【发布时间】:2012-06-11 05:02:05
【问题描述】:

我正在尝试将一个大型 (65mb) CSV 文件导入 SQL 表。我正在使用 phpMyAdming 和 xampp。我在 php.ini 中更改了以下设置:

memory_limit = 6000M
post_max_size = 128M
upload_max_filesize = 128M

当我尝试这个时,我收到错误“致命错误:第 294 行 C:\xampp\phpMyAdmin\libraries\import.lib.php 中的内存不足(分配 1852047360)(试图分配 262145 字节)”

我可以做些什么来解决这个错误?我还想导入一个更大的数据库。

【问题讨论】:

    标签: sql memory csv import


    【解决方案1】:

    你能把文件分成几块吗?

    【讨论】:

    • 我在提高 memory_limit 之前尝试了这个,但它有类似的错误。我已经看到人们在网上处理大文件,因为我很快将不得不导入一个更大的 csv 文件,所以我希望它能够正常工作,这样我就可以避免将文件分成 100 份
    • 我刚刚又试了一次,在我延长最大执行时间后仍然内存不足
    【解决方案2】:

    您可以编写 Python/PHP/Ruby 脚本来读取文件并解析数据,并逐行运行 INSERT 语句。

    【讨论】:

    • 我有一个编写 CSV 文件的 Java 程序。出于某种原因,当我尝试从 java 写入表时,创建该表大约需要 17 个小时,而我想要创建的更大的表大约需要一个月。我希望这会快得多。我当前的数据库是 7 列,其中一个 10 位整数和六个 2 位整数,以及 250 万行。当我尝试从 java 写入时,我不知道为什么要花这么长时间
    • 好吧,您可以构建一个大型查询而不是每次都编写,这更像是我的想法。
    • 另一个选项是 BULK INSERT
    • 这似乎并没有更快
    • @user1441453 - (编辑)哪种方法不是更快?此外,在任何 sql 问题中包含您的数据库类型和版本也很重要。所以我们知道您可以使用哪些选项:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多