2015-01-29 6 views
-1

pg_restore 명령을 작성하여 특정 테이블 (및 해당 데이터) 만 데이터베이스로 복원하려고합니다.특정 테이블 만 pg_restore

참고 : 덤프에서 온 데이터베이스가 다른이 있기 때문에 -v -x -O -j 8 -h localhost -U username -d database file.dump (호기심, 나는이 --clean을 사용하지 않았다 설명 모든 명령은 저를 삭제하고 데이터베이스를 다시 작성하고 끝나는로 시작 . 이름) pg_restore 이후

위의 인수와 함께 (나를 위해 잘 작동)를, 나는 pg_restore documentation 보았다,이 같은 시도 :

pg_restore -t table1 -t table2 ... (나는 이런 식으로 지정 (121 개) 테이블이 있습니다를).

는 그러나, 나는 오류를 다음과 같이 얻을 :

pg_restore: creating TABLE people 
pg_restore: [archiver (db)] Error from TOC entry 123; 1234 12345 TABLE people dumped_table_username 
pg_restore: [archiver (db)] could not execute query: ERROR: type "hstore" does not exist 
LINE 14:  extra_data hstore, 
         ^
    Command was: CREATE TABLE people (
    id integer NOT NULL, 
    name string, 
    age integer, 
    date_of_birt... 

이이 -t 플래그가 설정되어있는 경우에만 문제가 될 이유가 표시되지 않습니다하지만 것으로 보인다.

무슨 일 이니?


편집 :이 최근에 질문을 받았다 pg_restore on table failing because of hstore의 중복이며,이 시간으로 더 허용 대답이없는 것처럼 보인다.

+0

'... 데이터베이스를 삭제하고 다시 만들고 나와 끝나는 날부터 시작합니다. ''* 테이블을 삭제하고 다시 만들다 '는 뜻입니까? – joop

+0

아니, 전체 데이터베이스를 의미합니다. 나는 Rails를 사용하고 있으므로'rake db : drop && rake db : create'. – JacobEvelyn

+0

만약 당신이 * database *를 놓으면'hstore' 확장도 삭제됩니다. 데이터베이스를 다시 생성 한 후 (그리고 덤프를 복원하기 전에)'create hstore'를 실행합니까? –

답변

0

분명히, -t/--table 플래그가 설정된 pg_restore (그들은 그 테이블의 기술적 일부가 아닌이기 때문에) 덤프 파일에 CREATE EXTENSION 명령을 실행하지 않습니다. 내 문제는 pg_restore 명령 전에 수동으로 psql database -c "CREATE EXTENSION hstore;"을 실행하여 해결되었습니다.

+0

정기적으로 작업하는 경우 template1 데이터베이스에서 hstore 확장을 만들 수 있습니다. 그렇게하면 새로운 데이터베이스마다 hstore 확장이 자동으로 설치됩니다. –

+0

아, 그건 몰랐네! 네가 대답하면 받아 들일거야. – JacobEvelyn