2012-08-14 103 views
0

我们创建了一个导入脚本,它将大约120GB的数据导入MySQL数据库。数据保存在几个hunderd目录中(全部是分离的数据库)。每个目录包含具有表格结构和表格数据的文件。使用MySQL/PHP导入大量数据

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

这里是一个高层次的脚本是如何工作的:

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

添加于依据代码:https://gist.github.com/3349872

+3

没有足够的信息给任何人来帮助你。但我建议你使用更合适的语言来将如此大量的数据导入MySQL。 – Martin 2012-08-14 14:27:00

+0

也许一些设置与你的[脚本执行时间](http://php.net/manual/en/function.set-time-limit.php),其余很难弄清楚,没有任何代码。 – 2012-08-14 14:33:20

+0

我同意Martin的观点,PHP不是在这里使用的正确语言。尝试编译而不是解释。 – Matt 2012-08-14 14:33:25

回答

0

奥赫,问题是在代码中。令人惊讶的愚蠢的错误。

当在所有文件的子集上测试所有表格信息和表格内容(如果可用)的代码时。当不创建表计数时,函数会输入日志语句并返回。在真实数据上,这是一个错误,因为有没有数据和没有结构的文件,所以在创建几个表后,创建某个数据库的表出错了,并且返回了,所以没有创建其他表。

0

加入M记录矿石以查看成功的步骤,因为您可能会遇到内存使用或执行时间方面的问题。

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

的MySQL -u根-ppassword db_something < db_user.sql