最終更新:2012-04-11 (水) 04:38:56 (2778d)  

xml2sql はてなブックマークを見る
Top / xml2sql

http://download.wikimedia.org/ でダウンロードできるXMLダンプをmysql,mysqlimport,psqlでインポートできるSQLダンプに変換するツール

ダウンロード&使い方

patch for recent versions of mw (>=1.10)

because the revision table contains two new datasets since 1.10 (rev_len, rev_parent_id) the xml slightly changed. apply this patch to make it work again:

--- xml2sql-0.5/xml2sql.c	2008-01-16 15:32:28.000000000 +0100
+++ xml2sql-0.5 (2)/xml2sql.c	2008-02-17 15:06:34.000000000 +0100
@@ -741,6 +741,10 @@
	putcolumnf(&rev_tbl, "%d", revision.minor);
	/* rev_deleted */
	putcolumn(&rev_tbl, "0", 0);
+	
+	putcolumn(&rev_tbl, "NULL", 0);
+	putcolumn(&rev_tbl, "NULL", 0);
+
	finrecord(&rev_tbl);

	if(page.lastts == 0 || strcmp(page.lastts, revision.timestamp) < 0) {

メモ

952 :nobodyさん[]:2009/11/05(木) 17:09:16 ID:QrBblMDt
こんにちは。Wikipedia日本語版の全編集履歴を取得したいと考えております。 
全編集履歴を含むWikipediaダンプはjawiki-latest-pages-meta-history.xml(最新版)で、 
これがなんと400GB近くあります。とりあえずmysqlに投入するために色々調べたら、 
ImportDump.phpで投入すると何十日も掛かるらしく、xml2sqlというツールで変換して投入すると良いらしく、 
(それでも数日掛かるのかな?)変換しようと考えております。しかし、何故か、<Redirect>タグがどうのこうのとエラーが出るし、 
変換したら3つのファイル、revision.txt,page.txt,text.txtが作成されるのかな? 

で、よく考えたらHDDの容量が450GBしか無く、とても上記のファイルを確保できそうにありません 
元のxmlファイルを削除しながら変換するオプションとかあるんですか?helpで見ても無さそうだし、どうしたもんか・・・ 
やっぱり1TBくらいのHDDを用意して作業するしかないんですかね 

全編集履歴を取得した方居ませんか?どなたかアドバイスお願いします 
あと、テーブルの構造とかご存じでしたら教えてください。よろしくお願いします
943 :nobodyさん[sage]:2009/09/25(金) 12:04:14 ID:???
# bzcat jawiki-latest-pages-articles.xml.bz2 | sed -e 's/<redirect \/>/<redirect><\/redirect>/' | xml2sql 
unexpected element <redirect> 
xml2sql: parsing aborted at line 652 pos 14. 
# bzcat jawiki-latest-pages-articles.xml.bz2 | sed -e 's/<redirect \/>//' | xml2sql 
# ls -l *.txt 
-rw-r--r-- 1 root root 105800217 9月 25 11:57 page.txt 
-rw-r--r-- 1 root root 144668738 9月 25 11:57 revision.txt 
-rw-r--r-- 1 root root 3805082298 9月 25 11:57 text.txt 

こうなった。

2012/4

  • jawiki-20120315で
xml2sql: parsing aborted at line 34 pos 8.

というエラーが出る場合は

cat jawiki-20120315-pages-articles.xml | sed -e 's/<ns>.*<¥/ns>¥|<ns.*¥/>¥|<sha1>.*<¥/sha1>¥|<sha1.*¥/>¥|<redirect>.*<¥/redirect>¥|<redirect.*¥/>//' | xml2sql 
-rw-r--r-- 1 6.0G  3月 16 12:39 jawiki-20120315-pages-articles.xml
-rw-r--r-- 1 133M  4月 10 06:03 page.txt
-rw-r--r-- 1 180M  4月 10 06:03 revision.txt
-rw-r--r-- 1 5.3G  4月 10 06:03 text.txt

インポート

テーブルを作っておいてから

mysqlimport -u root -p jawiki -L page.txt
mysqlimport -u root -p jawiki -L revision.txt
mysqlimport -u root -p jawiki -L text.txt

関連データ

関連ツール

参考