読者です 読者をやめる 読者になる 読者になる

WikipediaのデータをOracleにインポート

全文検索を試したいなーと思いつつ、テストデータの準備が大変なので、
Wikipedia日本語版のダウンロードデータを試すことにしました。
ダウンロードしたデータは後々、
Oracle TextやSolrのdataimport使うことを前提にOracleへ突っ込むことにします。


ダウンロードするデータ
http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2


解凍すると6GB程のXMLファイルなんですが、xml2sqlというツールを使うと、
MySQLPostgreSQL形式のデータインポート形式のファイルを作成することができます。


xml2sqlは最近のWikipediaダウンロードデータに対応してないので、
以下のページを参考に、PostgreSQL形式のインポートデータを作ります。


http://sm.2-d.jp/blog/2009/06/wikipediamysql-for-linux-2.html
http://wiki.onakasuita.org/pukiwiki/?xml2sql


cat jawiki-20120104-pages-articles.xml| sed -e 's///' | /usr/local/bin/xml2sql -p


作成したデータ(text.sql)はIDとTEXT部分で構成されたタブ区切りのデータなので、
あとは、SQL*Loaderで読み込ませることができます。

ロード先のテーブル定義はこんなかんじ

create table wikipedia ( id varchar(10),text clob);

制御ファイルはこんなかんじ

LOAD DATA
INFILE 'Z:\TEXT.sql'
APPEND
INTO TABLE wikipedia
FIELDS TERMINATED BY X'09'
TRAILING NULLCOLS
(
"ID",
"TEXT" CHAR(1000000)
)


あとは、WikipediaのデータはUT8なので、NLS_LANGをJapanese_Japan.AL32UTF8などにして、

sqlldr solr/solr skip=3 readsize=2000000 control=cont.ctl

SQL*Loaderを実行すれば、wikipediaのデータをOracleに突っ込めます。


1/16 追記
Loadする行数が多すぎてそのままだとSQL*Loader-510が発生するので、sqlldrにreadsize=200000
を追記