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

时间:2013-05-28 05:37:54

标签: sql postgresql export database-backups pgadmin

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

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

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

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

2 个答案:

答案 0 :(得分:8)

请勿尝试使用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保持完美的向后和向前兼容性,它永远不会改进。

答案 1 :(得分:2)

使用pg_dump和psql

导出/导入

1.设置PGPASSWORD

export PGPASSWORD='123123123';

2.使用pg_dump

导出数据库
pg_dump -h <<host>> -U <<username>> <<dbname>> > /opt/db.out 

/opt/db.out是转储路径。您可以指定自己的。

3.然后再设置另一台主机的PGPASSWORD。如果主机相同或密码相同,则不需要这样做。

4.在您的另一台主机上导入数据库

psql -h <<host>> -U <<username>> -d <<dbname>> -f /opt/db.out

如果用户名不同,则在db.out文件中查找并替换您的本地用户名。并确保替换用户名而不是数据。

如果您仍想使用PGAdmin,请参阅以下步骤。

使用PGAdmin导出数据库:

选择数据库,然后单击“导出”。

  1. 文件选项
    • 为本地目录命名数据库文件名
    • 选择格式 - 普通
  2. 忽略转储选项#1
  3. 转储选项#2
    • 检查Use Insert Commands
  4. 物件
    • 如果您不想要任何
    • ,请取消选中
  5. 使用PGAdmin导入数据库:

    1. 创建新数据库。
    2. 保留选定的数据库,点击Menu->Plugins->PSQL Console
    3. 键入以下命令以导入数据库

      \i /path/to/db.sql
      
    4. 如果要单独导出架构和数据。

      导出架构

      1. 文件选项
        • 您本地目录中的名称架构文件
        • 选择格式 - 普通
      2. 转储选项#1
        • 检查Only Schema
        • 检查Blobs(默认选中)
      3. 导出数据

        1. 文件选项
          • 您本地目录中的名称数据文件
          • 选择格式 - 普通
        2. 转储选项#1
          • 检查Only Data
          • 检查Blobs(默认选中)
        3. 转储选项#2
          • 检查Use Insert Commands
          • 检查Verbose messages(默认选中)
        4. 注意:根据数据库大小导出/导入需要一些时间,而使用PGAdmin会增加更多时间。