![쉘 스크립트의 postgres/Redshift에서 COPY 명령의 스풀/캡처 출력](https://linux55.com/image/181784/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20postgres%2FRedshift%EC%97%90%EC%84%9C%20COPY%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%8A%A4%ED%92%80%2F%EC%BA%A1%EC%B2%98%20%EC%B6%9C%EB%A0%A5.png)
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
로 리디렉션하세요.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