하나의 데이터베이스에서 현재 비어있는 동일한 테이블을 가진 다른 데이터베이스로 테이블 내용을 복사해야합니다.pg_dump 대 COPY (SELECT * FROM my_table)
이전 테이블에서 테이블 데이터를 덤프 한 다음 새 데이터베이스의 빈 테이블로 가져 오면됩니다. 그러나, 나는 pg_dump를 사용하여 이해할 수없는 행동을했다.
는 내가 명령을 파일에 테이블 데이터를 덤프하려고 :
이pg_dump -a -t '"my_table"' my_database > /tmp/my_table.sql
이 작동하지만, 내가 지금처럼 테이블을 볼 수 있다면 난 단지 (8 개) 기록을 얻고 테이블에 1000 레코드가 :
SELECT * FROM my_table;
그래서, .csv 파일을 생성하는 COPY 명령을 사용하려고 나는 비슷한 동작을 참조하십시오
COPY my_table TO '/tmp/my_table.csv' WITH CSV HEADER;
을
나는 pg_dump와 같은 8 개의 레코드를 얻는다. 하지만, 함께 :
COPY (SELECT * FROM my_table) TO '/tmp/my_table.csv' WITH CSV HEADER;
나는 모든 1266 레코드를 얻습니다.
나는이 명령들이 모두 같은 데이터를 리턴해야한다고 생각하지만 분명히 틀렸다. 그 차이점은 무엇입니까?
꽤 이상합니다. 결과물을 보여줄 수 있습니까? –
'/ tmp/my_table.sql'에 얼마나 많은 레코드가 있습니까? – xdazz