masayuki14 / worklog

Record working log by issues.
MIT License
0 stars 0 forks source link

Output to PostgreSQL by Embulk #5

Closed masayuki14 closed 6 years ago

masayuki14 commented 6 years ago

embulk の出力先をPostgreSQLにする。 PostgreSQLはDockerコンテナにして動くようにする。

masayuki14 commented 6 years ago

DCを参考に docker-compose.yml を作る

version: '3'
services:
  embulk:
    build: .
    volumes:
      - .:/work
    depends_on:
      - db
    stdin_open: true
    tty: true

  db:
    image: postgres:9.6
    restart: always
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_DB:       interest_tier3
      POSTGRES_USER:     tier3
      POSTGRES_PASSWORD: password

embluk の Dockerfile はそのまま使える。

masayuki14 commented 6 years ago

ちょっと yelp_importer の実装をみてみる。

masayuki14 commented 6 years ago

config.yml がとても参考になる。

masayuki14 commented 6 years ago

ポスグレpluginの設定 out: 設定はこれ https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-postgresql

masayuki14 commented 6 years ago

docker-compose.ymlconfig.yml のポスグレ部分は同じにする。

masayuki14 commented 6 years ago

テーブル作ってないけど動かしてみる。

masayuki14 commented 6 years ago

% docker exec -it tripadvisorimporter_embulk_1 /bin/bash
# embulk run config.yml
masayuki14 commented 6 years ago

とりあえず動いた。

masayuki14 commented 6 years ago

テーブルを確認して見る。 ポスグレのコマンドはまだ全然わかんないからつらいなー。

% docker exec -it tripadvisorimporter_db_container_1 /bin/bash

root@9af0af8cec87:/# su postgres
$ psql
psql (9.6.7)
Type "help" for help.

postgres=#

ユーザーを変えてポスグレコンソールに入る

masayuki14 commented 6 years ago

PostgreSQLの基本的なコマンド
PostgreSql コマンドの覚え書き
この辺参考に見てみる。

masayuki14 commented 6 years ago
postgres=# -- user list
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member
 of
-----------+------------------------------------------------------------+-------
----
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 tier3_dev | Superuser                                                  | {}

postgres=# -- database list
postgres=# \l
                                     List of databases
        Name        |  Owner   | Encoding |  Collate   |   Ctype    |   Access p
rivileges
--------------------+----------+----------+------------+------------+-----------
------------
 interest_tier3_dev | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 postgres           | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0          | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgre
s          +
                    |          |          |            |            | postgres=C
Tc/postgres
 template1          | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgre
s          +
                    |          |          |            |            | postgres=C
Tc/postgres
(4 rows)
masayuki14 commented 6 years ago

postgres=# -- select database
postgres=# \c interest_tier3_dev
You are now connected to database "interest_tier3_dev" as user "postgres".
interest_tier3_dev=# -- table list

interest_tier3_dev=# \dt
 public | tripadvisor_businesses                            | table | tier3_dev
 public | tripadvisor_businesses_000001619c646a3b_embulk000 | table | tier3_dev
 public | tripadvisor_businesses_000001619c646a3b_embulk001 | table | tier3_dev
 public | tripadvisor_businesses_000001619c646a3b_embulk002 | table | tier3_dev
 public | tripadvisor_businesses_000001619c646a3b_embulk003 | table | tier3_dev
masayuki14 commented 6 years ago
interest_tier3_dev=# select * From tripadvisor_businesses ;
 https://www.tripadvisor.com/Attraction_Review-g946495-d1867744-Reviews-Sawarabi
_Street-Uji_Kyoto_Prefecture_Kinki.html | Sawarabi Street | 4.0  |     32 |
 | Points of Interest & Landmarks,Historic Walking Areas,Sights & Landmarks |
    5 |      15 |      12 |       0 |       0 | Uji            | Uji,
  |             | g946495    | d1867744   | 135.78813 | 34.88997 | https://media
-cdn.tripadvisor.com/media/photo-w/01/9e/1d/c2/caption.jpg
masayuki14 commented 6 years ago

データは入っている!! 中間テーブルみたいなのが出来るみたいだ。

masayuki14 commented 6 years ago

config.yml のオプションを変えて

opt:
  mode: merge

で実行したら、primary key がわからんから出来ない、みたいなメッセージがでたので、 テーブル作成はやはり事前に必要そう。

データ量を増やして実行してみよう。

masayuki14 commented 6 years ago

json 全部読み込んだっぽい。 とりあえず最低限の動作できた。