2012-12-04 5 views
10

"mydatabase"데이터베이스를 명령 줄을 통해 텍스트 파일 'mydatabase.sql'에 덤프합니다.Howto pg_restore

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_dump.exe " --host localhost --port 5432 --username "postgres" --no-password --verbose --file "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" 

Thas 'going nice. 하지만 많은 시도가 끝나면 pg_restore 파일을 데이터가있는 데이터베이스로 되돌릴 수 없습니다.
하지만이 데이터베이스의 모든 테이블을 삭제하면 내가 함께 할 수있는이의 모든 데이터를 복구

psql -f "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" "postgres" 

. 문제는 그래서 오히려 pg_restore.exe 필요 내가 VBNET/쉘을 통해 pgsl를 실행할 수 있다는 것입니다 이것은 나의 시도이다 :

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_restore.exe " -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C:\Users\User 1\Desktop\mydatabase.sql" 

... 내가받을 메시지 :

C : \ Users \ User 1> "C :/Program Files (x86) /PostgreSQL/9.1/bin/pg_restore.exe"-i -h localhost -p 5432 -U postgres -d "mydatabase"-v "C : \ Users \ User 1 \ Desktop \ mydatabase.sql " C :/Program Files (x86) /PostgreSQL/9.1/bin/pg_restore.exe" pg_restore.exe : [아카이버] 입력 파일이 유효한 보관

복원을 시도하기 전에 (테이블이없는) 서버에서 'mydatabase'데이터베이스가 비어 있습니다. pg_dump로 덤프되고 분명히 적절한 데이터가 들어있는 'mydatabase.sql'을 사용하여 pg_restore를 작동 시키려면 어떤 도움을 받으십시오. 그래서 나는 순수 명령 행 또는 VBNET/쉘을 통해 사용할 수 있습니다.

답변

11

pg_dump에서 -F t 플래그를 지정하십시오. 이렇게하면 pg_dump가 tar 형식으로 백업을 생성하며 pg_restore를 통한 복원에 적합합니다.

"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_dump.exe " --host localhost --port 5432 --username "postgres" --no-password --verbose -F t --file "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" 
+0

나는 본다. 그 작품 :) 감사합니다. –