postgresql / postgres / postgresql 에서 덤프 뜨는 법 / data 를 저장하는 법
pg_dump
table 의 schema 만 dump 를 뜨는 경우(이때 trigger 도 같이 저장된다.)
pg_dump -s -U mytestuser -d mydb > schema.sql
mydb 에 있는 mytab 이라는 table 을 back up
pg_dump -t mytab mydb > db.sql
5개의 worker 를 이용해서 mydb 를 dumpdir 에 dump 할 때, (directory format, -Fd, directory format 으로 할 때만 -j 를 사용할 수 있다.)
pg_dump -Fd -d mydb -j 5 -f dumpdir
5개의 worker 를 이용해서 mydb 의 mytable 을 dumpdir 에 dump 할 때
pg_dump -Fd -d 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가지 이다.
- data 만을 plain sql 로 가져와서 psql 를 이용해서 넣는다.
- 기존의 table 의 이름을 잠시 변경하고, restore 를 한 후에 다시 table 이름을 변경한다.
See Also
- database design - High-quality ERD generator for PostgresQL under Linux? - Stack Overflow
- SchemaSpy : db schema 파악용으로 사용할 수 있다.
- 쿠...sal: [컴] SchemaSpy 사용
댓글 없음:
댓글 쓰기