将 enwiki-latest-categorylinks.sql 加载到 mysql 中

cra*_*mav 4 mysql

我想将维基百科类别链接表加载到 MySql 数据库中。我在终端中使用了以下命令:

mysql -u root -proot categorylinks < enwiki-latest-categorylinks.sql
Run Code Online (Sandbox Code Playgroud)

该文件大小为 11.6 GB,已运行 3 天。有没有更好的方法来更快地加载它或者我需要设置一些设置以使其运行得更快???

小智 5

1)将SQL转储文件分为两部分:创建和数据

  1. grep -n "Dumping data" enwiki-latest-redirect.sql

这将返回分隔文件表部分的创建和数据的行号。让它是46。

  1. tail -n +46 enwiki-latest-redirect.sql > redirect -data.sql

我们在最后一个命令中获得的数字用作tail获取文件数据部分的输入。

  1. head -46 enwiki-latest-redirect.sql > redirect-creation.sql

我们在第一个命令中获得的数字用作head获取文件的表创建部分的输入。

2)从redirect-creation.sql中删除索引

以下是CREATE TABLE转储中的原始语句:

CREATE TABLE `redirect` ( 
 `rd_from` int(8) unsigned NOT NULL DEFAULT '0', 
 `rd_namespace` int(11) NOT NULL DEFAULT '0', 
 `rd_title` varbinary(255) NOT NULL DEFAULT '', 
 `rd_interwiki` varbinary(32) DEFAULT NULL, 
 `rd_fragment` varbinary(255) DEFAULT NULL,   
  PRIMARY KEY (`rd_from`),   
  KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
) ENGINE=InnoDB DEFAULT CHARSET=binary; 
Run Code Online (Sandbox Code Playgroud)

以下是删除索引后所需的版本:

CREATE TABLE `redirect` ( 
 `rd_from` int(8) unsigned NOT NULL DEFAULT '0', 
 `rd_namespace` int(11) NOT NULL DEFAULT '0', 
 `rd_title` varbinary(255) NOT NULL DEFAULT '', 
 `rd_interwiki` varbinary(32) DEFAULT NULL, 
 `rd_fragment` varbinary(255) DEFAULT NULL, 
) ENGINE=InnoDB DEFAULT CHARSET=binary; 
Run Code Online (Sandbox Code Playgroud)

编辑 page-creation.sql 以删除索引,如上所示。

3)加载创建的文件

mysql -u root -p wikipedia < redirect-creation.sql
mysql -u root -p wikipedia < redirect-data.sql
Run Code Online (Sandbox Code Playgroud)

4)加载数据后在你想要的字段上创建索引

create index idx_redirect_rd_from on redirect(rd_from)
Run Code Online (Sandbox Code Playgroud)

按照上述步骤,我可以在不到一个小时的时间内在我的 Macbook Pro 上加载类别链接表。