データを変換する技術としてEmbulkがあります。 仕事柄似たようなシステムを開発していて、興味があったのでQuick Startをやってみました
事前準備 Javaを実行できる環境が必要です。 私の環境にはインストールされておらず、$ java
ってタイプすると「“java”コマンドラインツールを使用するには、JDK をインストールする必要があります。」と言われます。 詳しい情報から、ORACLEのサイト に移動してJDKをダウンロード&インストールします
とりあえずよくわからないけど、Accept License Agreement
にチェックを入れてこれをダウンロードします
インストール 早速、GitHubのREADMEにQuick Startがあるので触ってみました
curlでソースをダウンロードして、ホームディレクトリに.embulk
として設置します。1
$ curl --create-dirs -o ~/.embulk/bin /embulk -L https:/ /bintray.com/artifact /download/embulk /maven/embulk -0 .4.10 .jar
ダウンロードしたソースに実行権限を付与1
$ chmod +x ~/.embulk/bin /embulk
パスを通す(私はzshなので、zshrc)1
2
$ echo 'export PATH="$HOME /.embulk/bin:$PATH " ' >> ~/.zshrc
$ source ~/.zshrc
触ってみた 1
2
3
4
5
6
7
8
$ embulk example ./try1
$ tree try1
try1
├── csv
│ └── sample_01.csv .gz
└── example.yml
1 directory, 2 files
を実行してみると、./try1
ディレクトリが出来ました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$ embulk guess ./try1/ example.yml -o config.yml
2015 -02 -28 16 :35 :24 ,891 +0900 : Embulk v0.4 .10
2015 -02 -28 16 :35 :26.213 +0900 [INFO] (guess): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015 -02 -28 16 :35 :26.227 +0900 [INFO] (guess): Loading files [/Users/ nakano/.embulk/ bin/try1/ csv/sample_01.csv.gz]
in:
type: file
path_prefix: /Users/ nakano/.embulk/ bin/try1/ csv/sample_
decoders:
- {type: gzip}
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: ''
null_string: 'NULL'
header_line: true
columns:
- {name: id, type: long }
- {name: account, type: long }
- {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S' }
- {name: purchase, type: timestamp, format: '%Y%m%d' }
- {name: comment, type: string}
exec: {}
out: {type: stdout}
Created 'config.yml' file.
1
2
3
4
5
6
7
8
9
10
11
12
$ embulk preview config.yml
2015-02-28 16:37:36,415 +0900: Embulk v0.4.10
2015-02-28 16:37:37.141 +0900 [INFO] (preview): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015-02-28 16:37:37.145 +0900 [INFO] (preview): Loading files [/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz]
+---------+--------------+-------------------------+-------------------------+----------------------------+
| id:long | account:long | time:timestamp | purchase:timestamp | comment:string |
+---------+--------------+-------------------------+-------------------------+----------------------------+
| 1 | 32,864 | 2015-01-27 19:23:49 UTC | 2015-01-27 00:00:00 UTC | embulk |
| 2 | 14,824 | 2015-01-27 19:01:23 UTC | 2015-01-27 00:00:00 UTC | embulk jruby |
| 3 | 27,559 | 2015-01-28 02:20:02 UTC | 2015-01-28 00:00:00 UTC | Embulk "csv" parser plugin |
| 4 | 11,270 | 2015-01-29 11:54:36 UTC | 2015-01-29 00:00:00 UTC | |
+---------+--------------+-------------------------+-------------------------+----------------------------+
これは変換結果のプレビューみたいですね。
1
2
3
4
5
6
7
8
9
10
11
12
$ embulk run config.yml
2015-02 -28 16:38:48,239 +0900 : Embulk v0.4.10
2015-02 -28 16:38:49.964 +0900 [INFO] (transaction): Listing local files at directory '/Users/nakano/.embulk/bin/try1/csv' filtering filename by prefix 'sample_'
2015-02 -28 16:38:49.971 +0900 [INFO] (transaction): Loading files [/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz]
2015-02 -28 16:38:50.080 +0900 [INFO] (transaction): {done: 0 / 1, running: 0}
1,32864,2015-01 -27 19:23:49,20150127,embulk
2,14824,2015-01 -27 19:01:23,20150127,embulk jruby
3,27559,2015-01 -28 02:20:02,20150128,Embulk "csv" parser plugin
4,11270,2015-01 -29 11:54:36,20150129,
2015-02 -28 16:38:50.151 +0900 [INFO] (transaction): {done: 1 / 1, running: 0}
2015-02 -28 16:38:50.167 +0900 [INFO] (main): Committed.
2015-02 -28 16:38:50.168 +0900 [INFO] (main): Next config diff: {"in":{"last_path":"/Users/nakano/.embulk/bin/try1/csv/sample_01.csv.gz"},"out":{}}
これで変換の実行ですかね。 できあがったファイルはどこにあるんだろう…( ˘⊖˘) 。oO ちょっと最後もやもやっとしたところでタイムアップ
参考URL