はじめに
embulkでembulk-input-jdbc
などを使っていると、query
に長いSQLを書きたいときがあります。
次のように工夫することで複数行に渡る文字列を記述することができます
方法1: YAMLの複数行リテラルを使う方法
|
を使うと複数行の入力ができます
in:
type: mysql
host: localhost
user: root
password: foobar
query: |
SELECT
ID,
NAME
FROM
USER_MST
方法2: liquidのcapture
を使う方法
{%capture%} ... {%endcapture%}
を使った方法です。
- 複数行リテラルを
capture
で変数raw_query
に代入する - さらに変数
query
に改行コードを除いたものを代入する - YAML内で
query
を参照する
{%capture raw_query %}
SELECT
ID,
NAME
FROM
USER_MST
{%endcapture%}
{% capture query %} {{ raw_query | strip_newlines }} {%endcapture%}
type: mysql
host: localhost
user: root
password: foobar
query: {{query}}
変数query
を使わず、YAML内に{{ raw_query | strip_newlines }} と書いてもOKです。