LoginSignup
1
1

More than 5 years have passed since last update.

PostgreSQLにデータロード(Compose.io@Bluemixの話)

Last updated at Posted at 2016-04-04

結論的には「ローカルにPostgreSQLを立てるのと同じ操作感で普通にロードできちゃいました」です。

composeでは、DBユーザにadmin権限をもらえません。
よって、王道である「copy」コマンドは使えません。PostgreSQLが入っているOSにログインができるわけでもないのでpg_restore等も使えません。なので。。。

・「¥copy」コマンドを使う(頭の「¥」がポイント) 今回はこれ!
・JavaやPerlからJDBC接続等でデータを入れる
・なんかツールがあるらしい?Transporter?
 https://www.compose.io/articles/how-postgresql-fits-compose/

データロードの概要

・データの場所:作業用PCのローカル
・ロード先:Compose(クラウド)上のPostgreSQL
・作業用PCから、Compose上のPostgreSQLにログインをして、ローカルのファイルをベースにデータロード。
スクリーンショット 2016-04-04 22.11.18.png

手順1:PostgreSQLにCLIで接続する

Overviewタブをクリックすると「Connect info」に書いてあるpsqlの定義をそのままコピペ(パスワードが最初は伏せ字になってますから、show/changeのところをクリックしてみて表示させる)。コピペしたコマンドを実行します(いろいろ伏せ字になってますのでご注意)。

$ psql  --host 'hostname.com' --port 99999 --username 'admin' 'test'
psql (9.3.1, server 9.4.6)
WARNING: psql major version 9.3, server major version 9.4.
         Some psql features might not work.
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

test=>

DB名 => と出てくれば、接続完了です。

手順2:¥copyコマンドでデータをロードする

なんかMarkdown記法のせいで変な色になってますが気にしないでください。

#時間を測定するように設定する
test=> \timing
Timing is on.

#PostgreSQLでPCローカルのデータをロード。¥copyコマンドを使用。ちなみにテキストのサイズは23MB。
test=> \copy customer from '/datadir/customer.txt' (delimiter '|');
Time: 18355.775 ms

#データがきちんとロードできているか確認
test=> select count(*) from customer;
 count
--------
 150000
(1 row)

手順3:データロードの時間はこんなかんじ

TPC-Hのデータを1GB分にしてデータロード。インターネットは家庭用の光回線です。
スクリーンショット 2016-04-04 22.08.58.png

だいたい足し算すると、1GBを10分ちょいでロード、、といったところでしょうか。
このロードにはPostgreSQLにデータをinsertした時間だけじゃなくて、自分のPCのローカルにあるファイルをクラウド上にアップして、それをPostgreSQLにinsertした時間、なわけですので自宅のインターネットの速度を考えてみたら、、かなり普通な値じゃないかなと思います。

まとめ:家のインターネット経由で、普通にPostgreSQLを使う感覚でComposeのDBaaS環境にデータをロードできた

できました!特にクラウドだからなんか遅いとかは感じなかったです。
要は普通に「PostgreSQL」の環境がクラウドで提供されているってことでした。

1
1
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
1
1