database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 8470 게시물 읽기
No. 8470
pg_dump 후 pg_restore 할 때 다른 이름의 테이블에 복구하는 방법?
작성자
김대청(dcmru)
작성일
2009-09-09 20:25ⓒ
2009-09-09 20:35ⓜ
조회수
7,725

질문은 제목과 같습니다. pg_dump로 백업을 받고, pg_restore로 스카마는 같은 다른 이름의 테이블에 복구하고 싶습니다.


제가 테스트를 해보니 pg_dump 시에 -a 옵션으로 데이타만 백업을  받아도, copy 구문이나 insert 구문에 테이블 이름이 같이 적혀 있었습니다.


pg_restore로 백업 파일을 풀어 보면 -t 옵션으로 다른 테이블 이름을 주면, 백업된 데이타는 보이지 않더군요.


테이블 이름이 틀려서 그런것 같습니다. 다른 테이블에 집어 넣으려면, 직접 치환을 해주어 psql로 복구하는 방법밖에 없나요?


pg_restore에 -t 옵션으로 테이블 이름을 지정하게 할 수 있어 당연히 될줄알았는데, 안되네요. 치환하는 방법 이외에 다른 방법이 있을까요?

이 글에 대한 댓글이 총 2건 있습니다.

A테이블의 자료를 뽑아서 B테이블로 넣을 경우라면,


dump 하기 전에, A테이블을 B테이블로 복사해 두거나,


A테이블의 테이블구조와, A테이블의 자료를 따로 덤프하고,

A테이블의 테이블구조 덤프한 것으로 복원한 다음 이름을 B로 바꾸고,

copy 명령으로 자료만 B테이블에 넣거나,

이런 방법 뿐인듯하네요.

pg_restore 명령으로는 dump 된 파일 안에, 해당 테이블 명으로 되어 이미 지정 되어 있어,

tar 를 풀고, restore.sql 파일과, toc.dat 파일을 편집하고, 다시 tar로 묶어 사용하면 될듯한데,

그런 일을 할 바에, 그냥 pg_dump에서 plain-text 방식으로 자료만 dump 받고, copy 명령을 사용하는 것이 더 나을듯합니다.

김상기(ioseph)님이 2009-09-11 00:00에 작성한 댓글입니다.

답변 감사드립니다. 자료가 많을 수도 있어서 압축을 버리기 힘든데, 테이블 끼리 복사하면, 오버해드가 더 클것 같습니다. 평문으로 받아서 copy 명령을 사용하는 방법을 연구해보겠습니다. pg_dump 로 평문으로 덤프 시에 자료만 받을 수 있나요? 한 번 해봐야겠네요. 다른 방법으로 생각한 것이 윗윗글에서 물어봤듯이 다른 DB를 만들어서 같은 테이블 이름을 사용하는 방법도 괜찮을것 같습니다. 여러가지로 생각해보겠습니다.

김대청(dcmru)님이 2009-09-11 00:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8484트리거에서 함수호출방법은... [1]
초보
2009-09-11
6701
8483DB가 틀릴 때 같은이름의 같은 스키마의 테이블을 만들 수 있나요? [2]
김대청
2009-09-10
6527
8471다른 테이블 데이터를 로드한 후에 삽입하려면 ? [2]
souler
2009-09-09
6641
8470pg_dump 후 pg_restore 할 때 다른 이름의 테이블에 복구하는 방법? [2]
김대청
2009-09-09
7725
8468휴대폰 번호 입력시의 사용자 정의 형식에 대해서 [2]
souler
2009-09-08
6961
8467데이터베이스 DDL 버전 관리 기법 문의합니다 [1]
김상기
2009-09-08
6906
8466[Greenplum] Copy 사용시 Select 문장 관련 [1]
강가딘
2009-09-06
6578
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다