Bluemixでデータ分析！「dashDB」：大量データロードその１　ーmoveToCloud

csvをDBにロードしたい、というときに複数の方法があるようで、大量データを扱いたい時のパターンもいくつかあるみたい。今回はmoveToCloudというdashDBが提供しているスクリプトを使ってデータロードをしてみた。
このスクリプトでは、**大量データを分割してそれぞれをgzipに固めてuploadしてくれるので、自力でえっちらおっちらアップするより高速と思われ。**

キャプチャ多めで長い記事になってしまいましたが、10分もかからずできるはずです。

ローカルPCにあるデータを専用スクリプトを使って、softlayerのobjectstorageか、amazonのs3にアップロードして、そのデータをdashから抜き出すことができるものみたい。

（ちょろっとしたデータのロードはこちら→　http://qiita.com/azzeten/items/d10fa47d115093cffef8　）

## S3の環境をつくる
①S3の環境を作成します。
・S3の画面にいきます。
・バケットの作成をクリックします。
・バケット名とリージョンを選べと言われるので、適当に選んで、作成。
（アップロードしたいファイル置き場を作る、といったイメージです）
![スクリーンショット 2016-05-15 12.55.17.png](https://qiita-image-store.s3.amazonaws.com/0/119378/304614dc-6e4f-a9cb-0666-2f717a291fa2.png)


②S3にアクセスするためのユーザを作成し、access key等の認証情報をゲットする。

・IAMをクリックして、「新規ユーザの作成」をクリックします。
![スクリーンショット 2016-05-16 10.43.08.png](https://qiita-image-store.s3.amazonaws.com/0/119378/2f324ee5-310c-3102-653d-907240c9d30d.png)

・ユーザ名は適当に・・。作成をしたら、以下のような画面が出てくるので、「ユーザーのセキュリティ認証情報を表示」をクリックして、キーをメモります。**これ、あとで使うので、大事な情報です！**
![スクリーンショット 2016-05-15 13.02.36.png](https://qiita-image-store.s3.amazonaws.com/0/119378/d9207498-dfb1-c6a1-c5bd-c2969454d7f5.png)

・S3をいじるようの権限をつけます。
「アクセス許可」タブから「ポリシーのアタッチ」で「AmazonS3FullAccess」を選びます。
（たぶんこれがないと、dashDBからS3の中身を見ようとした時に、エラーではじかれます。）
![スクリーンショット 2016-05-16 10.46.52.png](https://qiita-image-store.s3.amazonaws.com/0/119378/251efc56-46f7-71c1-79c8-351cd6fb68a6.png)


## 専用スクリプトで、ローカルのデータをupload

①専用スクリプトをダウンロード＆セットアップします。
・dashDBのWEB画面から「Load」をクリックして「Move to cloud」をクリックします。スクリプトをダウンロードできるリンクがあるので、これをクリックしてPCに落とします。
・落としたらunzipします。
・plファイルが本体で、creds.txtというのが認証情報を記載するファイルです。plファイルに実行権限がついていない場合は、権限をつけてあげてください（適当に777で・・・。本当はもっと厳密にやりましょうｗ）

```bash
$ chmod 777 moveToCloud.pl
```

・creds.txtには、先ほどAWSで作ったユーザの認証キーを入力しておきます。26行目、27行目あたりです。

```bash
accesskey=xxxxxxxxx
secretkey=xxxxxxxx
```

②スクリプトを実行して、ファイルをアップロードします。

・テスト実行
エラー無く帰ってくればOK。

```bash
$ ./moveToCloud.pl -test -target s3::ap-northeast-1::dashtest2016::/dashloadtest -creds creds.txt
```

・アップロード開始！成功〜

```bash
$ ./moveToCloud.pl -source /パス/emptest.csv -target s3::ap-northeast-1::dashtest2016::/dashloadtest -creds creds.txt

Successfully uploaded to "dashloadtest.gz"
```


## dashDBに突っ込む
①ロードするデータのあるS3の場所を選択します。
・「Load」から「Load from Cloud」を選択。Amazon S3を選んで、アップロードしたリージョン（endpoint）とaccess key とsecret access keyを入力して「Browse S3 Files」を選びます。
![スクリーンショット 2016-05-15 19.31.21.png](https://qiita-image-store.s3.amazonaws.com/0/119378/04454cc3-c93e-3647-d237-228f0a7a5432.png)


・別窓が開いて、どのファイルをアップロードするか聞かれるので、選んで、Nextをクリック。
![スクリーンショット 2016-05-15 19.31.59.png](https://qiita-image-store.s3.amazonaws.com/0/119378/f695d5f0-047c-b17f-8a6d-3dc748eccb7b.png)


②データをロードする対象のスキーマとテーブル名を選択します。
・クリックして選びます。
・「データを追記でinsertする（append）」か「既存データを消して新規でつっこむか」を選択します。今回はappendにしてみました。
![スクリーンショット 2016-05-15 19.44.03.png](https://qiita-image-store.s3.amazonaws.com/0/119378/f525bd16-39f5-13dd-e428-1d6dfe13fa4a.png)

③あとは道なりに「Next」で進みまくる。Run Nowを選んでNextをクリックすると、すぐにロードが開始されます。
・「Status and history」をクリックすると、ジョブのOK/NGや進捗状況を確認することができます。100%かつ緑のチェックが出てるので、successということで・・。
・ちなみに、JobIDの下の行をクリックして、青く反転させた状態で、「View log in blowser」をクリックすると詳細なログを確認することができます。NGのときはここでトレースとかをするのかなーといった具合です。たぶん。
![スクリーンショット 2016-05-15 19.51.44.png](https://qiita-image-store.s3.amazonaws.com/0/119378/274dfeb5-a80c-e669-e8f1-d9ee332bb195.png)


④確認。
・「Table」をクリックして、データをロードしたテーブルをクリック。データの中身が見れればOK。（コマンドラインからselect * してもよかったですが・・・）
![スクリーンショット 2016-05-15 19.52.33.png](https://qiita-image-store.s3.amazonaws.com/0/119378/1fb9be21-9cb8-2b76-8bbf-187b13ab7fd4.png)


## おまけ
今回はMacでやったのでスムーズにいきましたが、WindowsからだとCygwin入れてやるか、中にlinuxのVM入れてそこからやるとかする必要があるっぽい。