在Linux中备份PostgreSQL数据库

时间:2014-05-21 20:14:39

标签: postgresql postgresql-9.1

我必须在Linux中创建一个postgresql数据库备份(仅架构)并在窗口机器上恢复它。我使用选项-E备份数据库,但我无法在窗口机器上恢复它。

以下是我用来备份数据库的命令

pg_dump -s -E SQL_ASCII books > books.backup

下面是我尝试恢复时收到的错误消息。

C:/Program Files/PostgreSQL/9.3/bin\pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "books" --role "sa" --no-password  --list "C:\progress_db\test1"
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

我应该使用不同的命令还是我错过了什么?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

关于恢复的官方docs的第一行说:

  

pg_dump创建的文本文件旨在由   psql程序。恢复转储的常规命令表单是

     

psql dbname< infile

     

其中infile是pg_dump命令输出的文件

或者只是阅读错误信息。

选项-E SQL_ASCII仅设置字符编码,它与转储的格式无关。默认情况下,pg_dump生成一个文本文件,其中包含用于重新生成数据库的SQL语句;在这种情况下,要恢复数据库,您只需要在文件中执行sql命令,就像在psql终端中一样 - 这就是为什么一个简单的psql dbname < mydump是可行的方法。

pg_restore将与替代&#34;二进制&#34;一起使用-postgresql特定格式pg_dump