Manual:MWDumper/ja

MWDumperはMediaWikiダンプファイルからページのセットを素早く抽出する小さなツールです.

To import current XML export dumps, you should build MWDumper from ; you'll need tons of scattered dependencies from 2005 though. You can find a mostly up-to-date build at https://integration.mediawiki.org/ci/job/MWDumper-package/org.wikimedia$mwdumper/.

Third-party builds (which starts in GUI mode by default so you won't need most of the parameters below, just run it with ) may not contain the latest bug fixes. There are also third party builds without the gui default.

Current WMF builds are produced by jenkins; check the copy at download.wikimedia.org first, and for the absolute latest version check the jenkins build.

MediaWikiのエクスポートダンプ(バージョン 0.3、以下のアップロード)を読み込み、オプションのフィルタリング、1.4もしくは1.5スキーマでデータベースに直接ものを追加するために、XMLもしくはSQL文に戻す出力をすることが出来ます.

まだ多くが構築中です.

While this can be used to import XML dumps into a MediaWiki database, it may not always be the best choice for this task. See Manual:Importing XML dumps for an overview.

使用法
Before using mwdumper, your page, text, and revision tables must be empty: In SQL: DELETE FROM page; DELETE FROM text; DELETE FROM revision; In maintenance directory: php rebuildall.php

直接データベースのインポートをするためのサンプルのコマンドラインです: java -jar mwdumper.jar --format=sql:1.5 pages_full.xml.bz2 | mysql -u -p  を MySQL に渡すことです.

If you want to use the output of mwdumper in a JDBC URL, you should use set  in the query string.

Also make sure that your MediaWiki tables use CHARACTER SET=binary. Otherwise, you may get error messages like  because MySQL fails to distinguish certain characters.

複雑なフィルタリング
複数の出力ファイルを生み出すために複雑なフィルタリングをすることも出来ます: java -jar mwdumper.jar \ --output=bzip2:pages_public.xml.bz2 \ --format=xml \ --filter=notalk \ --filter=namespace:\!NS_USER \ --filter=latest \ --output=bzip2:pages_current.xml.bz2 \ --format=xml \ --filter=latest \ --output=gzip:pages_full_1.5.sql.gz \ --format=sql:1.5 \ --output=gzip:pages_full_1.4.sql.gz \ --format=sql:1.4 \ pages_full.xml.gz

裸のパラメータはXML入力を読み込むためにファイルとして解釈されます: "-"もしくは空の値が与えられた場合、入力はstdinから読み込まれます. ".gz"もしくは".bz2"拡張子を持つ入力ファイルはそれぞれgzipもしくはbzip2ストリームとして解凍されます.

7-zip、.7zファイルの内部解凍はまだサポートされていません; p7zipの7zaを通してファイルをそれらのファイルをパイプすることが出来ます:

7za e -so pages_full.xml.7z | java -jar mwdumper.jar --format=sql:1.5 | mysql -u -p

パラメータが与えられない場合のデフォルトです:
 * stdinから未解凍のXMLを読み込む
 * stoutから未解凍のXMLを書き込む
 * フィルタリング無し

出力シンク
--output=stdout パイプのために圧縮されていないXMLもしくはSQL出力をstdoutに送る. (キャラクタセットの問題を持っているかもしれません. ) 出力が指定されていない場合これはデフォルトです. --output=file: 圧縮されていない出力をファイルに書き込む. --output=gzip: 圧縮されていない出力をファイルに書き込む. --output=bzip2: 圧縮されていない出力をファイルに書き込む. --output=mysql: SQLフォーマットの出力のみ有効になります; MySQLサーバへの接続を開き、コマンドを直接送ります. これは次のようになります: mysql://localhost/databasename?user= &password=

出力フォーマット
--format=xml MediaWikiのXMLエクスポートファイルフォーマットに戻して出力します; 制限されたインポートのためのフィルタリングダンプに対して使用します. 出力は冪等(idempotent)です. --format=sql:1.4 MediaWiki 1.4のスキーマへのバルクインポートのためのフォーマットされたSQL文. --format=sql:1.5 MediaWiki1.5のスキーマへのバルクインポートのためにフォーマットされたSQL文. 両方のSQLスキーマバージョンは現在テーブル構造が既に空のデータベースにセットアップされていることが必要です; MediaWikiディストリビューションからmaintenance/tables.sqlを使用します.

フィルタアクション
--filter=latest それぞれのページのために並べられた最後のリビジョン以外すべてをスキップします. FIXME:現在タイムスタンプもしくはリビジョン数には注意を払いませんが、 シンプルなダンプでの項目の順番です. これは厳密には正しいもしく正しくないかもしれません. --filter=list: 与えられたファイルに現れないタイトルを持つすべてのページを排除します: 一行ごとに一つのタイトルを使用します; 空白と#で始まる行は無視されます. 与えられたタイトルの会話と題目の両方がマッチします. --filter=exactlist: 上記に関してですが、関連した会話/題目ページにマッチしないように試みます. --filter=namespace:[!] 与えられた名前空間にある(もしくは"!"で名前空間にない)ページのみ含みます. NS_*定数名もしくは生の数字キーを使用することが出来ます. --filter=notalk 出力からすべての会話ページを排除します(カスタムの名前空間を含みます) --filter=titlematch: タイトルが正規表現とマッチしないすべてのページを排除します.

その他のオプション
--progress= デフォルトの1000リビジョンからインターバルをレポートする変更の進展. --quiet stderrへの進行出力を送らない.

MySQLへの直接的な接続をしてmwdumperを使用する例
java -server -classpath mysql-connector-java-3.1.11/mysql-connector-java-3.1.11-bin.jar:mwdumper.jar \ org.mediawiki.dumper.Dumper --output=mysql://127.0.0.1/testwiki?user=wiki\&password=wiki \ --format=sql:1.4 20051020_pages_articles.xml.bz2

ノート:
 * mysql-connector JDBCドライバが必要です.
 * JREは-jarと-classpath引数を混合することを認めません(異なるコマンド構造だからです).
 * --output引数は--format引数の前でなければなりません.
 * MySQL URIでアンパサンド(&)はUnixシステム上ではエスケープしなければなりません.

Windows XP上でMySQLに直接接続してmwdumperを使用する例
上記の例で問題を抱えました...次の例はXPでベターに動作します....

1.次のようなバッチファイルを作成する.

set class=mwdumper.jar;mysql-connector-java-3.1.12/mysql-connector-java-3.1.12-bin.jar set data="C:\Documents and Settings\All Users.WINDOWS\Documents\en.wiki\enwiki-20060207-pages-articles.xml.bz2" java -client -classpath %class% org.mediawiki.dumper.Dumper "--output=mysql://127.0.0.1/wikidb?user= &password= " "--format=sql:1.5" %data%

pause

2.mysql-connector-java-3.1.12-bin.jarとmwdumper.jarをダウンロードします

3.バッチを動作させます.

注意


 * 1) "duplicate key"...というインポートファイルに関する問題がまだ報告されます
 * 2) クラスパスセパレータは例では ; (セミコロン)です; 上記の例とは異なります.

-- ページからの重複キーの結果、空ではないデータベースにあるリビジョンとテキストテーブル、ここで記述されたようなこれらを空にするためにphpMyadminを使用して下さい

パフォーマンスティップス
データベースへのインポートを速くするためには、次のことを試して下さい:


 * Javaの -serverオプションはSunのJVMのいくつかのバージョン上で大きなファイルのために飛躍的にパフォーマンスを増加させるかもしれません(すべてのインストーレションで利用可能ではありません)
 * MySQLのinnodb_log_file_sizeを増やします. デフォルトは5MBですが、ディスク書き込みの回数を減らすためにこれを増加させることで劇的にパフォーマンスを改善することが出来ます. (my-huge.cnfのサンプルコンフィグをご覧下さい. )
 * 必要ではない場合、インポート作業の間にバイナリログ(log-binオプション)を無効します. スタンドアロンのマシン上で、これは無駄遣いで、けして使わないすべてのクエリの2番目のコピーを書き込みします.
 * 様々な他の奇抜なティップスはMySQLのリファレンスマニュアルで読むことが出来ます.

バグの報告
mwdumper製品に関するバグはMediaWiki Bugzillaで報告することが出来ます.

Todo

 * Add some more junit tests
 * Include table initialization in SQL output
 * Allow use of table prefixes in SQL output
 * Ensure that titles and other bits are validated correctly.
 * Test XML input for robustness
 * Provide filter to strip ID numbers
 * &lt;siteinfo&gt; is technically optional; live without it and use default namespaces
 * GUI frontend(s)
 * Port to Python? ;)

変更の履歴 (要約)

 * 2005-10-25: Switched SqlWriter.sqlEscape back to less memory-hungry StringBuffer
 * 2005-10-24: Fixed SQL output in non-UTF-8 locales
 * 2005-10-21: Applied more speedup patches from Folke
 * 2005-10-11: SQL direct connection, GUI work begins
 * 2005-10-10: Applied speedup patches from Folke Behrens
 * 2005-10-05: Use bulk inserts in SQL mode
 * 2005-09-29: Converted from C# to Java
 * 2005-08-27: Initial extraction code