Linux
在 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';"
您只是重定向
stdout
,但該消息正在列印到stderr
。為了解決這個問題,通過附加將( ) 的輸出重定向到
stderr
( ) 。2``stdout``1``2>&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