php - 将维基百科转储导入 MySql

标签 php mysql dump

我正在尝试将 .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直接使用MySQL:

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。

关于php - 将维基百科转储导入 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384864/

相关文章:

php - 搜索MySQL数据库表,按SUM对结果排序

PHP:对象的最后一个键

php - 如何以多对多关系连接表

mysql - 使用正则表达式更新 MySQL

java - Java阻塞线程占用CPU资源多吗?

PHP 事件日历。 javascript按钮不会按下

mysql - 如何使连接表条目唯一?

MySQL 在 Select + 使用主 WHERE 子句中选择

windows - 在 windbg 中调试 "release-mode"二进制文件/转储

.net - 最小 MINIDUMP_TYPE 设置为转储托管 .net 组件的 native C++ 进程是什么,以便能够在 windbg 中使用 !clrstack