gpt4 book ai didi

sql - 使用 PostgreSQL 的 PgAdmin-III 导出数据库

转载 作者:行者123 更新时间:2023-11-29 11:21:26 28 4
gpt4 key购买 nike

如何将 Postgresql 数据库导出为可以在其他 pgAdmin 中执行的 SQL?

  • 导出为备份文件,版本不同时不起作用
  • 导出为 SQL 文件,尝试在不同的 pgAdmin 上运行时不执行

我尝试使用 pgAdmin III 导出数据库,但是当我尝试在其他 pgAdmin 中执行 SQL 时,它在 SQL 中抛出错误,当我尝试“恢复”时一个备份文件,它说版本不同,无法导入/恢复。

那么有没有一种“安全”的方法可以将数据库导出到标准 SQL 中,无论它是哪个版本,都可以在 pgAdmin SQL 编辑器中简单地执行?

最佳答案

不要为此尝试使用 PgAdmin-III。如果可能,直接使用 pg_dumppg_restore

使用来自目标服务器的 pg_dump 版本来转储源服务器。因此,如果您要从(比如说)8.4 升级到 9.2,您将使用 9.2 的 pg_dump 来创建转储。如果您创建一个 -Fc 自定义格式转储(推荐),您可以使用 pg_restore 将它应用到新的数据库服务器。如果您进行了常规 SQL 转储,则可以使用 psql 来应用它。

参见 the manual on upgrading your PostgreSQL cluster .

现在,如果您要降级,那就完全是一团糟了。

您将很难创建可在 任何 PostgreSQL 版本中运行的 SQL 转储。假设您创建了一个使用 WITH 查询的 VIEW。这在恢复到 PostgreSQL 8.3 时不起作用,因为它不支持 WITH。还有很多其他的例子。如果您必须支持旧的 PostgreSQL 版本,请在您仍然支持的最旧版本上进行开发,然后导出它的转储以供加载新版本。您不能理智地在新版本上开发并导出旧版本,即使有也不会很好地工作。

更麻烦的是,在旧版本上开发并不总能为您提供适用于新版本的代码。有时会在引入对新规范功能的支持的地方添加新关键字。有时,问题的解决方式会影响用户代码。例如,如果您要在(古老且不受支持的)8.2 上进行开发,则在 8.3 及更高版本上隐式转换为文本时会遇到很多问题。

最好的办法是在所有支持的版本上进行测试。考虑使用 Jenkins CI 之类的工具设置自动化测试。是的,这很痛苦,但这是随着时间的推移而改进的软件的价格。如果 Pg 保持完美的向后和向前兼容性,它永远不会改进。

关于sql - 使用 PostgreSQL 的 PgAdmin-III 导出数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784598/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com