답변:
다음은 원하는 것을 수행 할 수있는 쉘 스크립트입니다.
SCHEMA="myschema"
DB="mydb"
psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" $DB |\
while read TBL; do
psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV" $DB > $TBL.csv
done
DB 및 SCHEMA 변수를 특정 데이터베이스 및 스키마로 설정하십시오.
랩핑 psql 명령은 A 및 t 플래그를 사용하여 c 명령으로 전달 된 문자열에서 테이블 목록을 작성합니다.
모든 스키마를 내 보내야하는 경우 다음은 스크립트입니다.
PGDATABASE="db"
PGUSER="user"
psql -Atc "select schema_name from information_schema.schemata" |\
while read SCHEMA; do
if [[ "$SCHEMA" != "pg_catalog" && "$SCHEMA" != "information_schema" ]]; then
psql -Atc "select tablename from pg_tables where schemaname='$SCHEMA'" |\
while read TBL; do
psql -c "COPY $SCHEMA.$TBL TO STDOUT WITH CSV DELIMITER ';' HEADER ENCODING 'UTF-8'" > $SCHEMA.$TBL.csv
done
fi
done