[컴][DB] pg_dump / pg_restore

postgresql / postgres / postgresql 에서 덤프 뜨는 법 / data 를 저장하는 법



pg_dump


mydb 에 있는 mytab 이라는 table 을 back up
pg_dump -t mytab mydb > db.sql



5개의 worker 를 이용해서 mydb 를 dumpdir 에 dump 할 때
pg_dump -Fd mydb -j 5 -f dumpdir


5개의 worker 를 이용해서 mydb 의 mytable 을 dumpdir 에 dump 할 때
pg_dump -Fd mydb -t mytable -j 5 -f dumpdir


data 만을 dump 하고 싶으면 --data-only 를 추가하자
pg_dump --data-only --t mytable -Fd mydb -j 5 -f dumpdir_dataonly


pg_restore

이미 dump 된 파일이 있을 때 이 dump 된 파일에서 특정 table 의 data 만 추출할 때
pg_restore --data-only --t mytable dumpdir > onetable.pg


5433 port 에 postgres 라는 username 으로 ./dumpdir 에 있는 내용을 mydb 에 restore
pg_restore -d mydb -p 5433 -U postgres -v .\dumpdir


dumpdir 에 dumpfile 이 있는데, 이 dump 파일에서 mytable 의 내용만 가져와서 data.sql 로 저장
pg_restore --data-only -t mytable dumpdir > data.sql

data.sql 을 insert 할 때
psql -p 5433 -d mydb -U postgres < data.sql



owner 주의

restore 를 할 때는 되도록 owner 에 주의하자. db 를 새로 만드는 경우는 괜찮을 듯 한데, 만약 table 하나만 새롭게 restore 하는 경우라면 기존의 다른 db 와 owner 가 같은 계정으로 restore 를 진행하자.



다른 이름의 table 에 넣고 싶을 때


dump 한 내용을 다른 이름의 table 에 넣는 방법에 대해 위의 글에서 설명하는 바는 아래 2가지 이다.
  1. data 만을 plain sql 로 가져와서 psql 를 이용해서 넣는다.
  2. 기존의 table 의 이름을 잠시 변경하고, restore 를 한 후에 다시 table 이름을 변경한다.




References

  1. PostgreSQL: Documentation: 9.5: pg_dump
  2. PostgreSQL: Documentation: 9.5: pg_restore
  3. Restoring a single table from a Postgres database or backup




댓글 없음:

댓글 쓰기