当我尝试导入大约 500MB 的大型 sql 文件时遇到问题。它有 100,000 个扩展插入查询。我已经到处搜索了,但还没有找到。Bigdump 不支持扩展插入,因此没有用处。我看到的每一个建议都失败了,因为他们都使用了 fopen() 或 file(),这会导致 PHP 中的 MEMORY EXHAUST,即使我已将 memorty_limit 增加到 512M。我正在寻找一个可以读取 500MB 的 sql 文件并通过它并获取扩展插入的插入查询的代码。
任何人都可以帮助我吗?
当我尝试导入大约 500MB 的大型 sql 文件时遇到问题。它有 100,000 个扩展插入查询。我已经到处搜索了,但还没有找到。Bigdump 不支持扩展插入,因此没有用处。我看到的每一个建议都失败了,因为他们都使用了 fopen() 或 file(),这会导致 PHP 中的 MEMORY EXHAUST,即使我已将 memorty_limit 增加到 512M。我正在寻找一个可以读取 500MB 的 sql 文件并通过它并获取扩展插入的插入查询的代码。
任何人都可以帮助我吗?
您不应该在 PHP 中执行此操作,从 Web 服务器运行。
问题file()
在于它将整个文件读入一个大数组。根据文件的大小,这很容易达到刚刚发生的内存限制。
这不是您通常想要的。相反,您想一一获取这些行。这是iterators
完美的。
我认为您应该查看http://php.net/manual/en/class.iterator.php使用它来读取文件并通过命令行运行它...。