もっと簡単にデータロードしよー、っていう話を今日は書きます。
dashDBへ大きいファイルをロードするケースとして先日moveToCloudというスクリプトを利用する方法をチャレンジしてみましたが、S3とかのアカウント持ってるときは楽ちんですが、そうではない場合は・・・です。
http://qiita.com/azzeten/items/549be71e7317c34ea57b
でも、ブラウザからファイルを選んで頑張る、というのも、楽ちんである一方でちょっと手作業が気になる(ブラウザのセッション切れたら悲しくなりそう)です。
http://qiita.com/azzeten/items/d10fa47d115093cffef8
なので今回はdb2コマンドを使ってdashDBへデータロードをすることにチャレンジしたいと思います。これでやればスクリプト化もできるので、ある程度は楽ちんかなと思います。
前提
db2コマンドでdashDBへ接続できるようになっていることを確認してください(db2っぽく言うと、「catalogしておいてください」)。
簡単にコマンドを紹介しておきます。詳細は以下URLご参照(Windows限定の話になってますが、Unixでも一緒です)。
http://qiita.com/azzeten/items/554552a1150da6607d35
$ db2 catalog tcpip node node1 remote ホスト名 server 50000
$ db2 catalog database bludb as dash1 at node node1
$ db2 connect to dash1 user ユーザ名 using パスワード
db2コマンドでロード
ロードする前に事前にテーブル定義は必要です。
$ db2 "select * from load_table"
SDATE SHCODE SCODE CUST_CODE RNO RECEIPT_SUBNO AMOUNT
---------- ----------- ----------- -------------------- -------------------- ------------- --------------------
0 レコードが選択されました。
以下loadコマンドでロード実行します。ファイルのパス名は絶対パスにする必要があるようです。
$ db2 "load client from /home/〜パス名〜/meisai.csv of del INSERT INTO LOAD_TABLE"
〜中略〜
SQL3515W ユーティリティーは、"05/23/2016 03:44:01.678914" に
"BUILD" フェーズを完了しました。
読み込まれた行数 = 14
スキップされた行数 = 0
ロードされた行数 = 14
拒否された行数 = 0
削除された行数 = 0
コミットされた行数 = 14
内容を確認します。
$ db2 "select * from load_table"
SDATE SHCODE SCODE CUST_CODE RNO RECEIPT_SUBNO AMOUNT
---------- ----------- ----------- -------------------- -------------------- ------------- --------------------
2013-07-01 10000 1 10000000483 1518545 1 58
2013-07-01 10000 1 10000000481 8190 5 39342
2013-07-01 10000 1 10000000489 10210 3 6
(以下省略)