我在MySql中使用mwdumper导入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
最佳答案
我忘了这个问题,但我找到了解决方法,在postgres中使用mwdumper的命令行是:
java-jar mwdumper-1.16.jar--format=pgsql:1.5 ARCHIVE.xml.gz | psql-U wikiUSER-d wikiDATABASE
命令没有错误,发生的错误是因为mwdumper-1.16使用错误的sintaxe将xml转换为sql。
这是转换mwdumper之后的insert sql(XML->PostgreSql):
插入revision(rev_id,rev_page,rev_text_id,rev_comment,rev_user,rev_user_text,rev_timestamp,rev_minor_edit,rev_deleted)值(3781877476378187747,俄语名称中没有“Jr.”。谨致问候,X\'ZZ\'',0,'198.240.130.75','2010-08-10 14:55:48',0,0);
分析Mysql数据库中的相同插入,Postgres中的预期文本是:
插入(…),'俄文名称中没有“Jr.”。真诚的你,X''ZZ',(…)。
例如:
为了表示双引号,mwdumper给出了一个sintaxe“,但是要表示“在Postgres中没有”,它只是”。其他人也有同样的想法。
当你解决了所有的sintaxe错误,你可以完美地转储。