LoginSignup
7
6

More than 5 years have passed since last update.

td import:auto コマンドを使うときに気をつけたいこと

Last updated at Posted at 2015-05-26

TreasureDataを操作するコマンドラインツールに「tdコマンド」があります。
これを使うとデータベースの操作、クエリの実行や結果のエクスポートや、バルクインポートなどが捗ります。
http://toolbelt.treasuredata.com/

このコマンドを利用するときにハマったことを紹介します。

複数のcsvファイルを一括でインポートする方法

カラムの構成が同じファイルが複数に分かれており、それを一括で取り込みたいときに便利な方法があります。
ファイル名を指定する際、*.csvという形でワイルドカード指定が出来ます。

td import:auto --format csv --column-header --encoding Windows-31J --all-string \
 --time-value `date +%s`,10  --auto-create foo_db.bar_table path/to/example_*.csv

Tips: 上記コマンド例で使っている、インポートするファイルに時刻が無い時の対処法

--time-value `date +%s`,10とすれば、10のパーティションに分かれるように良い感じにインポートできます。
細かい説明は次の通りです。

--time-value (unixtime)オプションを付与することで、任意のtimeを付与させることができます。
注意点として、TreasureDataはtimeを1時間ごとにパーティションを区切って効率的なデータ処理を行うので、
全部のデータを--time-value 0にするとクエリの効率などが悪くなります。
そのため、データの更新日などでtimeの範囲がわかるのであれば、
--time-value UNIXTIME,HOURSのように指定することで、
ある時間からHOURS時間の範囲でtimeをばらけてデータを挿入してくれます。
引用元 https://oss.sios.com/bigdata-blog/ua59up

機種依存文字を含むcsvファイルのエンコーディング指定

td importコマンドでencodingに困ったときに参考になるTipsです。
いわゆるWindowsで作成された機種依存文字を含むcsvファイルを取り込む際、Shift_JISでの指定では化けてしまいます。
しかしながらCP932と指定しても、エラーとなります。その時はWindows-31JまたはMS932を指定しましょう。

  • 動く

    • Windows-31J
    • MS932
  • 動かない

    • CP932

こうなる背景としては、td importコマンドでは裏でtd-import.jarを呼び出しており、これはJavaで書かれています。
そのためCP932ではなく、Windows-31JないしMS932を指定する必要があるようです。
少々不思議なことですが、このどちらを指定しても、結果は同じです。

Javaの世界では、IBMのCP932とWindows-31Jを区別するために、MS932という用語が使われます。
(中略)
topics13_1.png
たいていの場合はそれで問題ないかもしれませんが、プログラミングにおいて、文字コードに「Windows-31J」と指定すべきところを、「Shift_JIS」と指定したがゆえに、文字化けを引き起こすことがあります。「Windows-31J」で定義されている文字が「Shift_JIS」にはない場合です。
引用元 http://una.soragoto.net/topics/13.html

バルクインポートに関するドキュメント

次のURLから、さまざまなTipsを参照できます。
http://docs.treasuredata.com/categories/bulk-import

  • Bulk Import Overview
  • Bulk Import from CSV file
  • Bulk Import from TSV file
  • Bulk Import from JSON file
  • Bulk Import from Amazon S3
  • Bulk Import from MySQL
  • Bulk Import from PostgreSQL
  • Bulk Import from MongoDB
  • Bulk Import Internals
  • Bulk Import Tips and Tricks

あわせて読みたい

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6