アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下①のファイルのようにpostgreSQLのcsv出力構文を記述したシェルスクリプトを作成しました。
実行したところエラーが出力されており、解決方法がないか探しています。
成功イメージとしてはシェルスクリプトを叩いてcsvファイルが出力されれば良いのですが、
今のところエラーの原因がわかりません。
もしお分かりの方がいらっしゃいましたら教えてください。
①失敗例 のシェルスクリプト
②成功例 のシェルスクリプト

################################
sample1.sh
#!/bin/bash
##〜環境変数に各種設定(略)〜##
CSV_FILE_NAME="ABC.csv"
psql << EOF
-- SQL実行
\COPY (
select
ui.aaa, ai.bbb ,ai.ccc, ui.ddd as ui_ddd , ai.ddd as ai_ddd,
case
when ui.delete_sample = '0' then '有効'
else '無効'
end as ui_delete_sample
from user_info ui inner join account_info ai
on ui.user_info_id = ai.user_info_id
where to_char(ui.aaa , 'yyyy-mm') = cast(current_date-cast('1 months' as interval) as char(7))
order by ui.aaa, ai.bbb ,ai.account_number) TO ${CSV_FILE_NAME} WITH CSV DELIMITER ',' HEADER;
EOF
################################
################################
実行結果:失敗
\copy: parse error at end of line
ERROR: syntax error at or near ")"
LINE 10: ...ui.aaa, ai.bbb ,ai.account_number) TO ABC...
################################

################################
sample2.sh
#!/bin/bash
##〜環境変数に各種設定(略)〜##
CSV_FILE_NAME="ABC.csv"
psql << EOF
-- SQL実行
\COPY (SELECT * from user_info ORDER BY user_info_id) TO ${CSV_FILE_NAME} WITH CSV DELIMITER ',' HEADER;
EOF
################################
################################
実行結果:成功
<エラーなし>
################################

A 回答 (1件)

psql -aで詳細表示したら、何かわかるかも。


「psq << 」を「cat >a.sql << 」にして、中身に変な文字が混入してないか確認しては。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!