【问题标题】:Importing wikipedia dump to MySql将维基百科转储导入 MySql
【发布时间】:2016-11-02 16:21:44
【问题描述】:

我正在尝试将 .bz2 文件导入 MySql 数据库,但出现此错误:

Fatal error: Out of memory (allocated 386400256) (tried to allocate 378535937 bytes) in C:\wamp\apps\phpmyadmin4.6.4\libraries\plugins\import\ImportXml.php on line 90

我在这里尝试了很多解决方案,包括提高upload_max_filesizememory_limitpost_max_size

任何帮助将不胜感激!

【问题讨论】:

  • 文件的大小和 php.ini 限制的值是多少?
  • 文件大小为115m,上传最大大小为800,内存限制1 Go,post max size也是1 Go
  • Php 在解压文件时可能内存不足。你应该研究一个流解压器

标签: php mysql dump


【解决方案1】:

如果可以的话,直接使用MySQL而不用PHP:

wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-page.sql.gz
wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-category.sql.gz
wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-categorylinks.sql.gz
wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-redirect.sql.gz
wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pagelinks.sql.gz
wget http://dumps.wikimedia.org/enwiki/latest/enwiki-latest-langlinks.sql.gz

gzip -d enwiki-latest-page.sql.gz
gzip -d enwiki-latest-category.sql.gz
gzip -d enwiki-latest-categorylinks.sql.gz
gzip -d enwiki-latest-redirect.sql.gz
gzip -d enwiki-latest-pagelinks.sql.gz
gzip -d enwiki-latest-langlinks.sql.gz

# Don't need this if MySQL is configured correctly.
# SET GLOBAL innodb_file_per_table = 1;
# SET GLOBAL general_log = 'OFF';
# SET FOREIGN_KEY_CHECKS=1;
# SET GLOBAL character_set_server = utf8mb4;
# SET NAMES utf8mb4;

CREATE DATABASE wiki_en; USE wiki_en;

# Don't need this if MySQL is configured correctly.
# ALTER DATABASE wiki_en CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

mysql -u root -p wiki_en < enwiki-latest-page.sql
mysql -u root -p wiki_en < enwiki-latest-redirect.sql
mysql -u root -p wiki_en < enwiki-latest-category.sql
mysql -u root -p wiki_en < enwiki-latest-categorylinks.sql
mysql -u root -p wiki_en < enwiki-latest-pagelinks.sql
mysql -u root -p wiki_en < enwiki-latest-langlinks.sql

# Indicative filesizes:
# -rw-r--r-- 1 root   root    35G Jun  2 07:01 enwiki-latest-pagelinks.sql
# -rw-r--r-- 1 root   root    13G Jun  2 07:45 enwiki-latest-categorylinks.sql
# -rw-r--r-- 1 root   root   4.3G Jun  2 11:08 enwiki-latest-page.sql
# -rw-r--r-- 1 root   root   900M Jun  2 11:03 enwiki-latest-langlinks.sql
# -rw-r--r-- 1 root   root   378M Jun  2 11:10 enwiki-latest-redirect.sql
# -rw-r--r-- 1 root   root   117M Jun  2 11:03 enwiki-latest-category.sql

如果你真的必须使用 PHP,你需要为 PHPMyAdmin 设置内存限制(参见this answer),同时确保你已经运行了上面的 MySQL。

【讨论】:

  • 如何执行?
  • 你有什么访问权限?服务器?通过 AWS?你的电脑? UNIX?视窗? MySQL 在哪个端口上运行?
  • Windows 3306 上的服务器 V 5
  • 好吧,如果你在 Windows 上,你可以直接使用浏览器下载文件,然后你可以手动解压缩每个文件以获取 .gz 文件。然后,登录 mysql,运行上面的命令(但不是以 mysql 开头的命令)。创建数据库后,退出,然后运行 ​​mysql 命令。请注意,这将需要很长时间。
  • 感谢您的回复,我正在这样做并面临我询问的问题
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 2019-04-18
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 2015-05-18
  • 2012-05-28
相关资源
最近更新 更多