0

当我尝试导入大约 500MB 的大型 sql 文件时遇到问题。它有 100,000 个扩展插入查询。我已经到处搜索了,但还没有找到。Bigdump 不支持扩展插入,因此没有用处。我看到的每一个建议都失败了,因为他们都使用了 fopen() 或 file(),这会导致 PHP 中的 MEMORY EXHAUST,即使我已将 memorty_limit 增加到 512M。我正在寻找一个可以读取 500MB 的 sql 文件并通过它并获取扩展插入的插入查询的代码。

任何人都可以帮助我吗?

4

2 回答 2

0

您不应该在 PHP 中执行此操作,从 Web 服务器运行。

  • 如果是一次性操作,请使用 phpmyadmin
  • 试试看你能不能用mysql提供的工具解决这个问题
  • 如果您必须编程(因为文件需要每天运行),请在命令行模式下运行 PHP
  • 如果您无权访问命令行,请尝试读取插入的部分内容并处理这些部分。
于 2012-09-21T10:22:03.853 回答
0

问题file()在于它将整个文件读入一个大数组。根据文件的大小,这很容易达到刚刚发生的内存限制。

这不是您通常想要的。相反,您想一一获取这些行。这是iterators完美的。

我认为您应该查看http://php.net/manual/en/class.iterator.php使用它来读取文件并通过命令行运行它...。

于 2012-09-21T10:28:10.387 回答