地平線に行く

2013-05-12

Wikipedia の本文データをデータベースに投入する手順

19:05 |

Wikipedia の本文データは、XML形式で公開されています。

(詳しい内容は、Wikipediaのダウンロードできるデータファイル一覧 | mwSoft が参考になります)

これをデータベースに投入する手順として、xml2sqlを使う方法がよく紹介されていますが、Wikimedia では「これを使ったやり方は推奨しない」と明記されています。


かといって、importDump.php を使うには PHP 環境を用意しなくていけません。

なので、Java で動く MWDumper を使って jawiki-latest-pages-articles.xml.bz2 (Wikipedia の本文データ)を投入してみました。


ダウンロード

上記をダウンロードして、カレントディレクトリにまとめて置いておいてください。


手順

MySQL 上でデータベースを作ります。*2

echo "CREATE DATABASE wikidb;" | mysql -u root

データベース定義を投入します。

mysql -u root wikidb < tables.sql

データを投入します…が、デフォルト設定のままだと com.mysql.jdbc.PacketTooBigException が発生するので、MySQL の設定を変更します。

参考: MySQLで大きなデータを登録しようとするとcom.mysql.jdbc.PacketTooBigException: 発生 - on the center line.

[mysqld]
max_allowed_packet = 16M    # この行を追加
vi /etc/my.cnf
/etc/init.d/mysql restart

本文データを投入する。

オプション設定については、 Manual:MWDumper - MediaWiki を参考にしてください)

java -server -classpath mysql-connector-java-5.1.25-bin.jar:mwdumper.jar \
   org.mediawiki.dumper.Dumper --output=mysql://127.0.0.1/wikidb?user=root \
   --format=sql:1.5 jawiki-latest-pages-articles.xml.bz2

環境にもよりますが、2時間ぐらいかかります。*3

しばらくお待ちください。


終わったら、試しにデータを表示します。

echo "SELECT * FROM text LIMIT 1;" | mysql -uroot wikidb

文字化けせずに無事データが帰ってくれば完了です。


どう使う?

考えてなかった…。

*1:データが大きい(1.6GB)ので要注意!

*2:ユーザ名、パスワードは適宜設定してください。

*3:Disk I/O の性能によるみたいです。

トラックバック - http://d.hatena.ne.jp/chiheisen/20130512/1368353131
リンク元