0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

6rep - Embulk to GCS

Last updated at Posted at 2020-04-11
  • Postgresqlから抽出してGCS(Google Cloud Strage)へぶん投げる
  • サンプル

必要な物

  • embulk plugin
    • embulk gem install embulk-output-command
    • embulk gem install embulk-output-gcs
    • embulk gem install embulk-input-postgresql
  • ファイル拡張子に.liquidとつける
    • liquid〜Embulkに備わっているテンプレートエンジン
    • 同じ設定を記載し続けて肥大化を避けるため
  • _env.yml.liquid
    • env設定ファイル
_env.yml.liquid
{% assign env_postgresql = 'postgresql' %}
{% assign env_host = '{host_name}' %}
{% assign env_user = '{user_name}' %}
{% assign env_password = '"{user_password}"' %}
{% assign env_database = '{database_name}' %}

_env.yml.liquidに設定なくてもenvに設定しguess.yml.liquidのなかで{env.{変数}}で同じことはできます

  • guess.yml.liquid
    • 汎用設定が書かれたテンプレートファイル
# guess.yml.liquid
{% include 'env' %}                          # 今回_env.yml.liquid使うため必須
exec:
  max_threads: 1                            # 最大並列数
  min_output_tasks: 1                       # OutPutタスク数制御(1にしないとOutPutファイルが複数分割される)
in:
  type: {{ env_postgresql }}
  host: {{ env_host }}
  user: {{ env_user }}
  password: {{ env_password }}
  database: {{ env_database }}
  query: |
    SELECT 
      * 
    FROM 
      {Table Name} 
    ;
out:
  type: gcs
  bucket: {{ env_gcp_bucket }}              # Bucket名
  path_prefix: logs/{{ env_path_prefix }}   # ファイル名
  file_ext: .tsv                            # ファイル名の末尾の文字列
  sequence_format: ""                       # 出力するファイル名につけるシーケンス OFF
  auth_method: json_key                     # GCSへの接続キー
  json_keyfile: {file名}.json
  formatter:
    type: csv
    delimiter: "\t"       # データ区切り文字
    charset: UTF-8        # ファイルのエンコーディング
    quote: ''             # データを囲む文字(TSVのためなし)
    quote_policy: MINIMAL # データをquoteで囲むルール MINIMAL:データに区切り文字や囲む文字や改行が含まれているとき
    escape: '\'           # quoteで囲むときに使われるエスケープ文字
    header_line	: false   # ヘッダー名を出力するかしないか
    newline: LF           # 改行コード
  

実行するときに留意点

  • json_keyfileはGCP IAMからサービスアカウントを発行
  • GCSに権限設定を追加(ストレージ管理者系)
    の設定を行なった後json_keyfileのキーを使い実行してください。

実行ファイル生成

$ embulk guess ./postgres-guess.yml.liquid -o postgres-config.yml

実行

# dry-run
embulk preview postgres-config.yml

# 実行
embulk run postgres-config.yml
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?