쉘 스크립트의 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

관련 정보