シェルスクリプトのpostgres/RedshiftでのCOPYコマンドのスプール/キャプチャ出力

シェルスクリプトのpostgres/RedshiftでのCOPYコマンドのスプール/キャプチャ出力

psqlコマンドを使用してRedshift / Postgresデータベースにデータを挿入するシェルスクリプトがあり、>を使用してスクリプト出力をキャプチャしています。挿入された行数を除くすべてをキャプチャします。画面上でスクリプトを手動で実行すると、挿入された行が表示されますが、出力をファイルに追加すると表示されません。

現在私 -

TRUNCATE TABLE and COMMIT TRANSACTION
COPY

予想出力 -

TRUNCATE TABLE and COMMIT TRANSACTION
INFO:  Load into table 'tablename' completed, 568 record(s) loaded successfully.
COPY

私のスクリプトから挿入されたコマンド -

psql -w -U uname -h dbhost db --port 1234 -c "COPY tablename FROM 's3://bucket1/tablename.json' credentials 'aws_access_key_id=' format as json 'auto';" 

ベストアンサー1

をリダイレクトしていますが、メッセージstdoutはとして印刷されていますstderr

この問題を解決するには、を追加してstderr()の出力を()2にリダイレクトします。stdout12>&1

psql -w -U uname -h dbhost db --port 1234 \
-c "COPY tablename FROM 's3://bucket1/tablename.json' credentials 'aws_access_key_id=' format as json 'auto';" \
 2>&1 > /path/to/log

おすすめ記事