Help us understand the problem. What is going on with this article?

YBIのバルクインポート(CGV,Mysql)

More than 3 years have passed since last update.

既存のデータをアップロードするときに使用するアップロード
サポートする形式としては、CSV,TSV,JSON,Mysql

やること

1.CSVファイルのバルクインポート
2.Mysqlからのバルクインポート

1.CSVからのバルクインポート

●前提条件

JAVAでの実行環境が必要

:バルクインポートの処理は高速化のため、JAVAで実装されている

$yum search openjdk(javaがあるのか確認)
$yum install java -1.7.0 -openjdk
$yum install java -1.7.0 -openjdk -devel(開発者用)
$java -version (version確認)

1.YBI account ログイン

$td account -f

2.DB作成

$td db:create my_db(データベース名)

3.テーブル作成

$td table:create my_db(データベース名) my_tbl(テーブル名)

4.ローカル環境のファイルを自分のVMに伝送する

(自分のVM上にCSVのファイルがないから、、、)
$scp /Users/N1504A009/Downloads/1065542\ (1).csv root@...**:/home/dir1

ps)scpコマンド使用
$scp [オプション] コピー元 コピー先
ipアドレスとコピー先ディレクトリの間は、コロン「:」で区切る

5.いよいよCSVのバルクインポートする!

$td import:auto --format csv --auto-create apache_sample.access --parallel 8 --prepare-parallel 8 --column-header -o ./dir --time-column 'time' --time-format "%Y-%m-%d %H:%M:%S" ./temp

*コマンドの意味

1)import:auto
:TD-CLIのアップロードにはいくつかのステップがありautoオプションを指定することでその全てのステップを自動的に実行してくれる。
2)format csv(形式)
:ファイルの形式を書く。TSVならTSV,mysqlならmysqlなど
3) --auto-create
:データを置く場所の指定?調べる必要ある
4) --parallel 8
;データアプロードの並行スレッド数
5) --prepare-parallel 8
:データをMessagePack形式に加工する際の並行スレッド数
6) --column-header
:TreasureData上でのカラム名をアップロード対象ファイルの一行目の値を利用するように指定する。
7) -o ./dir
:MessagePack形式ファイルの出力先Directory
8) --time-column 'time'
:自分のデータのtime columnを指定すること
ps)YBIは時系列のデータを分析するための分析エンジン、この指定は必須である!
  YBIは時系列のデータのtime column部分を取って、(indexがつけられるため)高速に分析できる
  IoT時代では、時系列のデータは重要になる
9) --time-format "%Y-%m-%d %H:%M:%S"
:指定した時刻カラムのフォーマット
10) ./temp
:アップロードの対象ファイル  

*注意する点

1.自分がアップロードするファイルの位置をちゃんと把握するして絶対パスや相対パスを指定すること
2.結果を排出するディレクトリを指定すること

2.mysqlからのバルクインポート

●前提条件

−mysqlクライアントを実行してデータをインポート済であること!
$mysql -u root -ppassword < sample.dump

1.上記と流れは一緒

YBIログイン→DB作成→テーブル作成
今回の場合 DB:my_db
Table:my_tbl
format:mysql

2.mysqlからバルクインポート!

$td import:auto --auto-create my_db.my_tbl --format mysql --db-url jdbc:mysql://localhost/sample --db-user root --db-password '******' --time-value 1436770937 sample21

*コマンドの意味

1) --format mysql
:mysql形式のデータ
ここからのコマンドはmysql上のDBに接続するために!探せるように指定すること
2) --db-url jdbc:mysql://localhost/sample
:自分のVM上でアップロードする場合localhostで登録すること、IPアドレスでもいい、ホスト名でもいい
:jdbcはJava とリレーショナルデータベースの接続のためのAPIする。ここではjdbcを通じて私のmysqlに接続する事を意味する
:/sampleは自分のmysql上にあるDBの名前!
3)--db user root
:ここでuser名はrootであるから
4)--db-password '*******'
:mysqlに入るためのパスワード
5)--time-value
:YBIは時系列データだから元々は--time-column date_timeを入れるべき!しかし、自分のtableはtime columnがないから--time-valueを入れた(timeカラムがない場合こうする)また、数値としては、
コマンド使ってUNIX時間を取得して入力すること
ps)$date +%s
6)sample21
最後はmysql上にあるDBにあるテーブル名(一つ選んで入力した)

以上!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした