Embulkでinformixのデータをcsvゲット

Talend Open Studioの英語のマニュアルもまともに読めないヘタレです。
embulkに浮気します。

僕のデータ取得の用途だとTalendよりも簡単に出来そうに思えたので。

embulkがこの~~CultなDB~~ Informixでも使えるのか？
csvで吐き出せるのかでテストしてみたいと思います。

```text:やりたいことの図

informix -> embulk -> csv

```

##環境
- Windows 7 SP1 (x64)
- Java SE 1.8.0.65
- embulk v0.8.1

##手順

```ps1:embulkをゲット
#PowerShellの画面
PS1> Invoke-WebRequest http://dl.embulk.org/embulk-latest.jar -OutFile embulk.bat
```

```bat:jdbcのpluginをインストール
#コマンドプロンプト上
embulk.bat gem install embulk-input-jdbc
```

```bat:seed.ymlを作る
atom seed.yml
```

```yaml:seed.ymlの中身

in:
        type: jdbc
        driver_path: C:\Program Files\IBM\Informix_JDBC_Driver\lib\ifxjdbc.jar
        driver_class: com.informix.jdbc.IfxDriver
        url: jdbc:informix-sqli://192.168.0.1:1526/mydb:INFORMIXSERVER=myserver;DB_locale=ja_JP.932;NEWCODESET=MS932,sjis-s,932;
        user: username
        password: password
        table: tables
out:
        type: file
        path_prefix: C:\Users\yusuke\tables.csv
        file_ext: csv
        formatter:
                type: csv
                header_line: true
                charset: UTF-8
                newline: CRLF

```

```bat:guessを実行
> embulk.bat guess seed.yml -o guess.yml
2016-02-02 13:53:58.973 +0900 [INFO] (guess): Loaded plugin embulk-input-jdbc (0
.6.4)
in: {type: jdbc, driver_path: 'C:\Program Files\IBM\Informix_JDBC_Driver\lib\ifx
jdbc.jar',
...(省略)...

```

```yaml:guess.ymlの中身
in: {type: jdbc, driver_path: 'C:\Program Files\IBM\Informix_JDBC_Driver\lib\ifxjdbc.jar',
  driver_class: com.informix.jdbc.IfxDriver, url: 'jdbc:informix-sqli://192.168.0.1:1526/mydb:INFORMIXSERVER=myserver;DB_locale=ja_JP.932;NEWCODESET=MS932,sjis-s,932;',
  user: username, password: password, table: tables}
out:
  type: file
  path_prefix: C:\Users\yusuke\tables.csv
  file_ext: csv
  formatter: {type: csv, header_line: true, charset: UTF-8, newline: CRLF}
```

エラーが出なければまずは実行してみましょう。

```bat:runを実行
> embulk.bat run guess.yml
2016-02-02 13:54:31.030 +0900 [INFO] (transaction): Loaded plugin embulk-input-j
dbc (0.6.4)
2016-02-02 13:54:31.174 +0900 [INFO] (transaction): SQL: SELECT * FROM  tables
...(以下略)

```

何故か、8つのcsvファイルが出力されます。
tables.csv.000.00.csvはちゃんと全てのデータが出力されています。


@hiroysato さんから exec: min_output_tasks: 1 加えると、
1つのファイルに出力できるという情報頂きました。
ありがとうございます。


```yaml:1つのcsvファイルで出力するseed.yml
exec:
  min_output_tasks: 1
    
in:
        type: jdbc
        driver_path: C:\Program Files\IBM\Informix_JDBC_Driver\lib\ifxjdbc.jar
        driver_class: com.informix.jdbc.IfxDriver
        url: jdbc:informix-sqli://192.168.0.1:1526/mydb:INFORMIXSERVER=myserver;DB_locale=ja_JP.932;NEWCODESET=MS932,sjis-s,932;
        user: username
        password: password
        table: tables
out:
        type: file
        path_prefix: C:\Users\yusuke\tables.csv
        file_ext: csv
        formatter:
                type: csv
                header_line: true
                charset: UTF-8
                newline: CRLF

```

これを食わせて実行すると1つのcsvファイルになります。

```bat:runを実行
> embulk.bat run guess.yml
2016-02-02 13:54:31.030 +0900 [INFO] (transaction): Loaded plugin embulk-input-j
dbc (0.6.4)
2016-02-02 13:54:31.174 +0900 [INFO] (transaction): SQL: SELECT * FROM  tables
...(以下略)

```

使えるね。


##参考文献
[データ転送のOSS「Embulk」を使って、MysqlからデータをCsvに落としてみる](http://a-auto50.blogspot.jp/2015/05/ossembulkmysqlcsv.html)
csvの出力を参考にさせてもらいました。
[embulk-input-jdbc - github](https://github.com/embulk/embulk-input-jdbc)
input-jdbcでのデータを取得するときのymlファイルの書き方