2007年5月30日水曜日

RedBrickに触れる

いやーこんなDBあったんですね^^;
しかもDWHに特化してるそうなぁ・・・。
で、このRedBrickにもOracleのsqlローダと
同じようなツールが存在して、
何百万件もの大量データを高速にロードできる。
なにやらTMUという総称らしんですが、
今回私が利用したのはクライアントからロードする
rb_cmtuというやつです。
まぁ、このプロジェ終わったら二度と使いそうに
ないけど、マニアックなのでメモっと。
とりあえずMS-DOSの環境設定から
すべてデフォルトでソフトをインストールしています。


set RB_CONFIG=C:\RedBrick\Cliant32
set RB_DSN=MyDsn(設定したODBCの名前)

これでrb_cmtuでサーバにアクセスできるようになる。
なにやらサーバ側にも設定が必要らしいんですが、
何もせずに繋がりました。
次にデータ抽出。今のプロジェでは開発環境から本番環境
には直接つなぐことができないため、本番環境からデータを
抽出して、開発環境にいれてやる必要があるためです。
つながる場合は、rb_cpしとやらで直接やりとりができるようです。
で本題。

unloade 'table名'
external
outputfile 'outputファイル名'

上記を記述したフィアルをunload.tmuとして保存。
上記ファイルをrb_cmtuで使用する。

c:\>rb_cmtu unload.tmu db_uid db_pass

これで30万件のデータが30秒程度でぬけました。はやっ。!
んで、上記outputファイルをロードしてやるコントロールファイルを作成。
オラクルと同じですね。
これは一からつくるのではなく既存テーブルをもとに作成

generate load data 'table名'
inputfile 'outputファイル名'←先ほど取得したファイル
external ←外部ファイルの読み込み指定(簡単にいうとスペース区切りのテキスト)
tmufile 'コントロールファイル名.tmu'

上記ファイルをgen_load.tmuとして保存。
んで実行

c:\>rb_cmtu gen_load.tmu db_uid db_pass

これでコントロールファイルのできあがり!
あとは流すだけ

c:\>rb_cmtu コントロールファイル名.tmu db_uid db_pass

ね、簡単でしょwww
(全部pdfのマニュアルにかいてる、けど読むのメンドイ)
ちなみに30万件のデータをcseでエクスポートして
そのデータをインポートすると3時間以上かかりましたが
こでやると1分とかかりません^^;
また全て同一ディレクトリでやったことはいうまでもありません。

0 件のコメント: