如何在Postgresql命令行中使用mwdumper

时间:2014-10-09 22:39:07

标签: postgresql mediawiki dump

我使用mwdumper和MySql导入MediaWiki数据库。现在我需要做同样的事情,但是使用Postgresql。

基本上我在这个链接中获得了一个档案:

http://dumps.wikimedia.org/enwiki/20140903/

我使用mwdumper程序来获取信息并放入我的数据库。

这是数据库脚本:

https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2Fpostgres%2Ftables.sql

我通过这个sql创建了数据库,现在我需要使用mwdumper将数据放入我的数据库中。 我看到很多关于此的链接,但只在MySql中做。

任何人都知道如何使用Postgres使用命令行进行导入?


Mwdumper:www.mediawiki.org/wiki/Manual:MWDumper

1 个答案:

答案 0 :(得分:0)

我忘记了这个问题,但我发现解决方案,使用 mwdumper postgres 的命令行是:

java -jar mwdumper-1.16.jar --format = pgsql:1.5 ARCHIVE.xml.gz | psql -U wikiUSER -d wikiDATABASE

该命令没有错,发生的错误是因为mwdumper-1.16将xml转换为带有错误sintaxe的sql。

这是转换mwdumper(XML-> PostgreSql)后的插入sql:

INSERT INTO修订版(rev_id,rev_page,rev_text_id,rev_comment,rev_user,rev_user_text,rev_timestamp,rev_minor_edit,rev_deleted)VALUES(378187747,676,378187747,'没有这样的东西\“Jr。 “用俄文名字。真诚的你,X \\'ZZ \\'',0,'198.240.130.75','2010-08-10 14:55:48',0,0); < / em>的

在我的数据库Mysql中对同一个插件进行分析,Postgres中的预期文本是:

INSERT INTO(...),'没有“Jr.”这样的东西用俄文名字。真诚的,X'''ZZ \''',(...)。

例如: 为了表示双引号,mwdumper给出一个sintaxe \“,但在Postgres中代表没有\,它只是。与其他人相同的想法sintaxe错误。

当你解决所有sintaxe错误时,你可以完美地转储。