我必须在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.
我应该使用不同的命令还是我错过了什么?非常感谢您的帮助。
答案 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
。