Phr*_*ogz 10 postgresql export restore pg-dump psql
我有一个运行PostgreSQL v9.0的(生产)数据库服务器和一个运行PostgreSQL v8.4的开发机器.我想转储生产数据库并在开发机器上使用它.我无法升级dev机器上的postgres.
在生产机器上,我运行:
pg_dump -f nvdls.db -F p -U nvdladmin nvdlstats
Run Code Online (Sandbox Code Playgroud)
在开发机器上,我运行:
pg_restore -d nvdlstats -U nvdladmin nvdls.db
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
pg_restore: [archiver] unsupported version (1.12) in file header
Run Code Online (Sandbox Code Playgroud)
无论我在转储时选择自定义,tar还是plain_text格式,都会发生这种情况.
我在网上发现了一个讨论,建议我pg_restore
在开发机器上使用更新版本.我通过简单地将9.0二进制文件复制到开发机器来尝试这一点,但由于链接问题,这会失败(不会出乎意料).
我认为使用plain_text转储的意义在于它将是原始的可移植SQL.显然不是.
如何将9.0 DB安装到我的8.4安装中?
a_h*_*ame 27
pg_restore 仅用于恢复以"自定义"格式获取的转储.
如果您执行"纯文本"转储,则必须使用psql来运行生成的SQL脚本:
psql -f nvdls.db dbname username
不支持使用 pg_dump/pg_restore 从 9.0 移动到 8.4 - 仅支持向前移动。
但是,您通常可以获取数据(在仅数据转储中),并且在某些情况下您可以获得模式 - 但这主要是运气,这取决于您使用的功能。
您通常应该使用 pg_dump 和 pg_restore 的目标版本 - 这意味着在这种情况下您应该使用 8.4 中的二进制文件。但是你应该使用相同版本的 pg_dump 和 pg_restore。这两种工具都可以在网络上正常工作,因此不需要复制二进制文件。
正如 a_horse_with_no_name 所说,您最好在纯文本模式下使用 pg_dump - 这将允许您在必要时手动编辑转储。特别是,您可以制作一个仅模式转储(使用 -s)和一个仅数据转储 - 只有模式转储可能需要任何编辑。
归档时间: |
|
查看次数: |
41070 次 |
最近记录: |