いやーこんな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 コメント:
コメントを投稿