【问题标题】:postgresql- restoring .dump filepostgresql - 恢复 .dump 文件
【发布时间】:2010-12-24 09:20:15
【问题描述】:

我是 psql 的新手。我从我的服务器 data.dump 文件中得到。我需要在本地恢复它。 我试过这些命令。

i) psql -U postgres dbname -f servicedb.dump

Error:
      psql: warning: extra command-line argument "-f" ignored
      psql: warning: extra command-line argument "servicedb.dump" ignored

ii) psql -U postgres dbname

 Error:
              ^
 ERROR:  syntaxe error at or near "☺"
 LINE 1: ☺☺

这个“.dump”文件是什么以及如何恢复它?

【问题讨论】:

  • 笑脸+1 :)

标签: postgresql dump database-restore


【解决方案1】:

我从我的服务器 (Heroku) 获得了一个 .dump 文件。正如 Klaus 所说,pg_restore 是我可以在本地恢复它的唯一方法。

我在终端上写的是:

pg_restore -c -d [database_name] [dumpfile_name].dump

您可以在 pg_restore 的 Klaus 链接中看到很多选项 :)

【讨论】:

    【解决方案2】:

    psql -f filenamed.dmp db_name

    工作正常

    【讨论】:

    • 不适用于二进制转储,这已由 OP 的第 ii 点指出。
    【解决方案3】:

    对于 Postgres 9.2

    pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [user] -d [db] [filename].dump
    

    【讨论】:

      【解决方案4】:

      查看pg_restore 命令。

      【讨论】:

        【解决方案5】:

        在windows环境下我发现它很棘手。

        如果是文本格式转储,pg_restore 将不起作用。在这种情况下,我们需要使用 psql。

        psql -U username -f database.dump databasename

        它会提示输入用户名的密码,然后将启动恢复过程。

        【讨论】:

          【解决方案6】:

          pg_restore 远非显而易见,这是我用来在 AWS 上运行的远程 Postgres 实例上创建新数据库并将转储文件恢复到其中的命令。如果您的连接正确,pg_restore 应该立即要求您输入密码)

          pg_restore -h mypostgresdb.eu-west-1.rds.amazonaws.com -U adminuser --verbose -C -d existingdatabase mydbdump.dm
          

          开关在哪里:

          • -h - aws 上的主机名
          • -U - 用户名,这需要是具有创建数据库权限的管理员用户
          • --verbose - 获取详细输出到屏幕
          • -C - 表示从转储文件创建一个全新的数据库(它将被命名为您转储的数据库的名称)
          • -d - 令人困惑的是,这需要是已经存在的数据库的名称,基本上 pg_restore 需要连接到现有数据库,以便它可以运行必要的脚本来创建新数据库
          • mydbdump.dmp 这是您尝试恢复的转储文件的位置。

          【讨论】:

            【解决方案7】:

            psql 用于纯文本转储,使用 pg_restore。

            【讨论】:

              【解决方案8】:

              如果您有 pgsql 转储文件(例如 pgsql_dump.sql.gz)并想恢复它,请尝试按照以下步骤操作-

              sudo su postgres
              psql
              
              drop database my_database;
              

              (用于删除现有数据库。如果数据库存在,请提供要恢复的数据库名称以代替 my_database

              create database my_database;
              

              (提供您要恢复的数据库的名称来代替 my_database)

              \q
              

              (这是退出psql

              gunzip <  /tmp/pgsql_dump.sql.gz | psql -Upostgres my_database 
              

              (提供保存转储的实际路径以代替/tmp/

              【讨论】:

                猜你喜欢
                • 2020-05-19
                • 2015-09-29
                • 2021-12-06
                • 2012-11-13
                • 1970-01-01
                • 2023-03-16
                • 2022-10-05
                • 1970-01-01
                相关资源
                最近更新 更多