はじめに
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です。