问题标签 [pg-restore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
35542 浏览

postgresql - 如何将二进制 pgdump(压缩)转换为纯 SQL 文件?

我确实想在数据库转储中搜索一些数据,但这些转储使用二进制压缩格式(PGDMP标头)。

如何在不恢复它们的情况下将它们转换为 SQL?

0 投票
2 回答
430 浏览

postgresql - 等效于 pg_restore 的 SQL 命令

是否有任何相当于的 SQL 命令pg_restore?虽然我可以使用 Python 连接到 PostgreSQL 数据库(在 AWS RDS 上)psycopg2,但没有权限安装任何二进制包,如pg_restore. 如何恢复使用pg_dumpwithout制作的转储pg_restore

0 投票
2 回答
4536 浏览

postgresql-9.1 - 尝试恢复数据库时 PgAdmin III 没有响应

我正在尝试恢复数据库(通过备份文件),我在 PgAdmin III(Postgresql 9.1)上。选择备份文件后,显示 pg_restore.exe 正在运行的窗口,然后 PgAdmin 没有响应,已经几个小时了(这不是 RAM 不足的问题)

这可能是由于备份文件大小(500 MB)的原因,但我几天前已经用 300 MB 备份文件恢复了一个数据库,并且顺利完成。顺便说一下,备份文件的格式(通过 pg_dump 创建)是“tar”格式。

如果您有任何想法或您需要更多信息,请告诉我。我感谢任何人的任何帮助或指示。提前致谢。

0 投票
1 回答
3961 浏览

python - 有没有办法用 pg_restore 自动解压?

我有一个制作 PostgreSQL 备份的程序,并让用户有机会压缩这些备份:

现在,我正在使用 pg_restore 来恢复它们,但如果文件被压缩,我就无法做到这一点。有什么方法可以直接使用 pg_restore(如 pg_dump 或 pg_dumpall)来完成,还是我必须检查使用的压缩类型并用 Python 解压缩它们?

0 投票
2 回答
5935 浏览

postgresql - 如何在 PostgreSQL 中恢复集群备份?

我正在尝试在 PostgreSQL 中恢复集群备份。我使用了 pg_dumpall,它生成了一个带有 SQL 查询的纯文本文件。但是,当我尝试恢复它时,我收到此错误:

pg_restore: [archiver] 输入文件似乎不是有效的存档

当我尝试恢复数据库的备份(使用 pg_dump 生成)时,我也收到了同样的错误,但我解决了这个问题。在这种情况下,pg_restore 无法识别带有 SQL 查询的纯文本,所以我更改了命令:

而是写道:

这样生成的文件不是纯文本的,所以 pg_restore 可以很好地处理它。

现在,我正在尝试使用 pg_dumpall 进行相同的管理,但没有 -F 参数。我的代码(在 Python3 中,但此命令对于任何语言都相同)是:

知道如何管理这个吗?或者至少如何以任何方式恢复集群备份?先感谢您!

编辑

如果我使用psql来恢复:

它似乎有效,控制台中显示了很多命令,但每个命令都给出“它已经存在”错误。我无法理解,因为我有两个集群(端口 5432 和 5433),当我确定我已连接到 5433 时,我猜它正在尝试在 5432 中恢复。以前有人遇到过这个问题吗?

0 投票
1 回答
3204 浏览

postgresql - 在视图中使用 hstore 比较转储和还原 PostgreSQL 数据库失败

我有一个比较两hstore列的视图。

当我转储和还原此数据库时,还原失败并显示以下错误消息:

我可以通过以下步骤在 PostgreSQL 9.3.0 中创建此错误:

为了完整起见,转储和恢复过程如下所示:

pg_restore -l /tmp/hstore_test_2014-05-12.backup建议在hstore创建视图之前启用扩展:

顺便说一句,用替换NULLIF(col1, col2)似乎col1 = col2会使错误消失,尽管它是对pg_restore所抱怨的类型的明确比较。

0 投票
1 回答
2009 浏览

postgresql - pg_restore 抱怨转储中的完整性错误。这甚至可能吗?

我已经像这样转储了 OpenERP 数据库:

源机器有:

scp转储到目标机器(一个 OpenVZ 容器),其中 pg_restore 是:

我像这样运行 pg_restore:

我能看到的唯一区别是两台机器上的 postgres 用户不一样(但这应该由 处理-O)。pg_restore 抱怨:

此错误针对多个表多次发出。之后,许多关于丢失元组的错误如下:

我不明白这是怎么可能的,因为源数据库似乎没问题。

恢复的数据库有许多空表(每个失败导致值太长):

此外,我在同一台源机器上执行 pg_restore:

一切都按预期工作。没有一个警告。

我应该怎么办?我究竟做错了什么?

0 投票
1 回答
1426 浏览

postgresql - 如何恢复/倒带我的 PostgreSQL 数据库

我们每晚对我们的数据库进行完整备份,然后我使用该转储创建我自己的 dev-db。dev-db 的创建大约需要 10 分钟,所以它每天早上在我开始工作之前由 cron 安排。所以我现在可以使用几乎实时的数据库。

但是当我测试东西时,有时将完整的数据库或一些特定的表回滚到初始备份会很方便。当然,我可以完全重建 dev-db,但这会让我再等 10 分钟,然后才能再次运行测试。

那么有没有一种简单的方法可以将数据库/表恢复/倒回到特定的时间点或从转储中恢复?

我曾尝试pg_restore像这样使用来恢复特定的表:

我已经尝试过类似-c和的选项--data-only。但是这里似乎有几个我没有预见到的问题:

  • 当恢复的数据被复制回来时,旧数据不会自动删除。
  • 有几个外键约束使得这不可能(如果我错了,请纠正我),而无需在还原之前明确删除 FK,然后再次添加它们。
  • 在这一点上,出现故障的 PK 序列根本不关心我,但这也可能是一个问题。

编辑:我测试/调查的更多内容:

  • pg_basebackup
  • 一个更强力的替代方法pg_basebackup是停止 db-server,复制 db-files,然后启动 db-server。

上述两种选择都失败了,因为我有几个本地数据库在同一个集群中运行,并且汇总了磁盘上的大量数据。没有办法以这种方式分离数据库!所以这里的文件复制操作不会给我任何速度增益。

0 投票
1 回答
205 浏览

database - Heroku 自动恢复

我需要将每日备份从一个数据库自动传输到另一个数据库。数据库和应用程序都托管在 heroku 上。我知道如果使用以下命令从本地计算机手动执行此操作是可能的:

但是这个过程应该是自动化的,而不是从本地机器上运行。我有一个想法写一个 rake 来执行这个命令;并在 Heroku Scheduler 插件的帮助下每天运行这个 rake。

任何想法如何更好地做到这一点?或者也许有更好的方法来完成这项任务?

提前致谢。

0 投票
5 回答
31626 浏览

postgresql - 在远程机器上恢复转储

我有我自己的带有 postgres dmp 文件的机器,我想在我的网络中的远程虚拟机上恢复它(例如,ip 是 192.168.0.190,postgres 端口是 5432)。是否可以使用 pg_restore 恢复此转储而不将转储复制到远程机器?因为转储的大小大约为 12GB,而虚拟机上的磁盘空间为 20GB。谢谢