在 shell 脚本中假脱机/捕获 postgres/Redshift 中 COPY 命令的输出

在 shell 脚本中假脱机/捕获 postgres/Redshift 中 COPY 命令的输出

我有 shell 脚本,它将使用 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( )的输出重定向2stdout( ) 。12>&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

相关内容