【问题标题】:Importing large amounts of data using MySQL/PHP使用 MySQL/PHP 导入大量数据
【发布时间】:2012-08-14 14:23:30
【问题描述】:

我们创建了一个导入脚本,将大约 120GB 的数据导入 MySQL 数据库。数据保存在几百个目录中(都是独立的数据库)。每个目录都包含具有表结构和表数据的文件。

问题是;它可以在我的本地计算机上使用实际数据的子集,但是当在服务器上运行导入时(这需要几天时间)。并非所有表都已创建(即使是在本地测试的表)。奇怪的是,脚本在服务器上运行时在创建表时没有显示任何错误。

以下是脚本工作原理的简要说明:

  1. 查找代表数据库的所有目录
  2. 创建所有数据库
  3. 每个数据库循环遍历表:创建表,填充表

在 gist 上添加代码:https://gist.github.com/3349872

【问题讨论】:

  • 没有足够的信息供任何人帮助您。但我建议您使用更合适的语言来将如此大量的数据导入 MySQL。
  • 也许你的script execution time有一些设置,其余的很难弄清楚,没有任何代码。
  • 我同意 Martin 的观点,即 PHP 不是在这里使用的正确语言。尝试编译而不是解释的东西。
  • 您需要什么信息。我不知道在哪里寻找问题,所以给我一个方向,我会得到信息。其次,我对所选语言无能为力。
  • @MihaiIorga 该脚本在执行时间(okey 很多重置)和内存管理方面做得非常好。在 gist 上添加了代码。 stackoverflow 格式化程序无法处理它。

标签: php mysql


【解决方案1】:

添加更多日志以查看成功的步骤,因为您可能遇到内存使用或执行时间问题。

为什么不从给定的 CVS 文件创建 sql 文件,然后在 bash 中正常导入?

mysql -u root -ppassword db_something

【讨论】:

    【解决方案2】:

    哎呀,问题出在代码中。惊人的愚蠢错误。

    在所有文件的子集上测试代码时,所有可用的表格信息和表格内容。当未创建表计数时,该函数进入日志记录语句并返回。在真实数据上,这是一个错误,因为有些文件没有数据,也没有结构,所以在创建几个表之后,某个数据库的表的创建出错并返回,因此没有创建其他表。

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2014-05-28
      • 2019-01-22
      • 2011-04-16
      相关资源
      最近更新 更多