问题标签 [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 投票
1 回答
68 浏览

postgresql - 为什么恢复没有结束?

首先,我认为还原太大,所以我没有将单个 2GB (压缩)数据库备份拆分为多个备份,一个用于模式。此架构map有 600 Mb。下一步将拆分为表格。

这个有一些来自我的国家地图的空间数据,不确定这是否相关。

正如你所看到的差不多2小时。该磁盘不再真正使用。恢复开始时,磁盘数次达到 100%。但最后一小时持平 0%

在此处输入图像描述

正如您在此处看到的,我可以访问所有已恢复表中的数据。所以看起来已经完成了。

在此处输入图像描述

这是正常的吗?。有什么我可以检查的,看看是什么在做恢复?

硬件设置:

  • Core i7 @ 3.4 GHz - 24 GB 内存
  • 250 GB SSD 上的数据库 SATA 磁盘中的备份文件

编辑

在此处输入图像描述

0 投票
1 回答
387 浏览

python-3.x - 如何以编程方式知道 pg_restore 何时完成

我正在编写一个将执行 pg_restore 的 Python 脚本。恢复完成后,我希望 Python 脚本执行几个 CREATE 和 GRANT 语句来创建数据库用户。

*我不能使用 pg_dumpall 将它们添加到转储中,因为我正在从 AWS 迁移并且不允许使用 pg_dumpall。所以,我不得不取消个人权限并使用模板/字典编写一个脚本来为我做这件事。

**我的问题:有没有办法让我的 Python 脚本检查 pg_restore 命令是否已完成,以便它可以移动到下一段代码?现在,一旦 pg_restore 启动,它会立即返回 SUCCESS。我无法找到任何关于此的信息。通常,在 SQL Server 中,当我需要等待某事(通常是 JobAgent)完成时,我会在循环中等待延迟。

0 投票
1 回答
115 浏览

sql - 使用 pqsl 的 .sql 备份不起作用

抱歉我的愚蠢问题,但我需要你的帮助。我已经尝试了一切,但似乎没有任何效果。

我想在 Windows 10 上使用 pgAdmin 4 和 psql 恢复数据库。我在 pgAdmin 4 中创建了一个数据库和一个用户。然后我打开psql并执行 set role to 然后\i <name.sql>. 我总是得到一个错误。

没有这样的文件或目录。

文件在

psql C:/Users/hasan/a.sql

我在 pgAdmin 中设置了一个路径C:/Program Files/PostgresSQL/9.6/bin。我还尝试通过在 pgAdmin 4 中右键单击 db 来恢复数据库。它开始运行并且没有任何反应。

它已经运行了几个小时。进程观察器也不显示任何信息。我不知道该怎么办。我已经尝试了此页面中的所有解决方案,还观看了 youtube 视频。它行不通。

0 投票
2 回答
4476 浏览

postgresql - pg_restore 无法执行查询:错误:无效的语言环境名称:“en_US.UTF-8”

我在 Windows 10 上使用 pg_restore 和在 Linux 上制作的转储文件。

我收到这个错误

我在网上搜索,但没有找到答案。

[新]:我在我的计算机上安装 Ubuntu 以使用 pg_restore 但是当我发送

命令行被阻止。

有人有这个问题吗?

0 投票
0 回答
2097 浏览

postgresql - pg_dump 有没有办法不使用 search_path 作为模式

问题:pg_dump 命令有没有办法不使用 search_path 来设置模式,而是用表名定义模式

我的一般情况是我正在尝试转储和恢复一个包含许多模式的 postgis 数据库(这是为了将我的数据库迁移到 Amazon RDS)。在每个模式中,我都有包含地理列的表。从转储生成的 SQL 类似于:

但是,在恢复时,我收到以下错误:

pg_restore: [archiver (db)] 来自 TOC 条目 346 的错误;1259 1135099 TABLE main mapworks pg_restore: [archiver (db)] 无法执行查询:错误:关系“spatial_ref_sys”不存在第 3 行:
geometry public.geography(Geometry,4283),^ QUERY: SELECT proj4text FROM spatial_ref_sys WHERE srid = 4283 LIMIT 1 命令是:CREATE TABLE main(pk bigint NOT NULL,geometry public.geography(Geometry,4283),batch bigint NOT NULL,jso ...

然后事情就从那里变成梨形了。

到目前为止,我已经推断出,由于“公共”模式未包含在搜索路径中,因此该操作无法找到“spatial_ref_sys”表。奇怪的是,如果 EPSG 代码是 4326,这可以正常工作。

所以......我能做些什么呢?有没有办法告诉 pg_dump 不要使用 search_path?

我要转储的服务器

x86_64-pc-linux-gnu 上的 PostgreSQL 9.6.1,由 gcc (Debian 4.9.2-10) 4.9.2 编译,64 位

POSTGIS="2.3.1 r15264" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0,2012 年 3 月 6 日" GDAL="GDAL 1.10.1,2013 年 8 月 26 日发布" LIBXML="2.9.1" LIBJSON="0.11.99"(来自“2.3.0 r15146”的核心过程需要升级)拓扑(来自“2.3.0 r15146”的拓扑过程需要升级)RASTER(来自“2.3.0”的光栅过程r15146" 需要升级)

我要恢复到的服务器

x86_64-pc-linux-gnu 上的 PostgreSQL 9.6.1,由 gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) 编译,64 位

POSTGIS="2.3.0 r15146" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.2,2015 年 9 月 8 日" GDAL="GDAL 2.1.1,2016 年 7 月 7 日发布" LIBXML="2.9.1" LIBJSON="0.12" 拓扑栅格

0 投票
1 回答
2691 浏览

database - pg_restore:[compress_io] 无法解压缩数据:设置的代码长度无效

pg_restore在 Mac 中执行命令时遇到问题。它返回此错误:

我正在使用 postgres 9.6.2。

0 投票
3 回答
15647 浏览

python - pg_dump & pg_restore 密码使用 python 模块子进程

问题:使用 PSQLpg_dumppg_restore在 Python 脚本中使用subprocess模块。

背景:我正在使用python 2.7来自 localhost (ie) 的以下脚本Ubuntu 14.04.5 LTS在 PSQL 服务器 (ie) 中创建表的备份,PostgreSQL 9.4.11并将其恢复到Ubuntu 16.04.2 LTS新版本的 PSQL 服务器 (ie) 中的远程主机 (ie PostgreSQL 9.6.2)。

当我按上述顺序使用函数时,dump_table()函数成功完成并创建/tmp/table.sql文件,但restore_table()函数返回以下错误:

('', '密码:\npg_restore: [archiver (db)] 连接到数据库“database_name”失败:致命:用户“用户名”的密码验证失败\n致命:用户“用户名”的密码验证失败\n')*

我已经通过在 shell 中执行命令检查了凭据和输出,pg_restore并且我还包含了 .pgpass 的凭据(尽管不相关,因为我正在传递密码p.communicate()

有人有类似的经历吗?我几乎被困住了!

问候,D。

0 投票
2 回答
6630 浏览

sql - 使用 pg_restore 创建或覆盖表

我知道这是一个奇怪的请求,但出于一些我无法避免的奇怪原因,我希望能够始终将几个表从一个数据库同步到另一个数据库。我知道我可以自己在脚本中写出功能,但我认为并将对我自己不知道的过程应用很多优化pg_dumppg_restore

我想知道是否有办法pg_restore覆盖现有表。基本上,在伪代码中类似于:

如果这不是很好,我也愿意接受替代方法。

0 投票
1 回答
29598 浏览

postgresql - pg_restore 会覆盖现有的表吗?

假设我有两个主机服务器 s1 和 s2。在这两个服务器中,我都有一个名为 n1 的模式,现在我对 s1 的模式 n1 中存在的一些表进行了一些更改。我希望对服务器 s2 的架构 n1 进行相同的更改。我打算做的是使用 pg_dump 备份服务器 s1 的架构 n1,并使用 pg_restore 在服务器 s2 中恢复。现在我的问题是,因为服务器 s2 中已经有相同的架构 n1 具有相同的表集。恢复过程会做什么?它会覆盖现有的表还是我应该删除服务器 s2 的现有模式并使用服务器 s1 的转储来恢复它?

0 投票
1 回答
147 浏览

postgresql - Postgresql 服务器到服务器复制

假设我有两个远程服务器 10.0.0.1 和 10.0.0.2。在两台服务器中,我都安装了带有相同数据库的 postgresql 数据库。现在我需要的是,对服务器 10.0.0.1 上的数据库所做的任何更改或更改都应自动复制到服务器 10.0.0.2 上的数据库中。有什么方法可以执行此自动化过程吗?如果是这样,请建议我这样做的最佳和最有效的方法。我使用的 postgresql 版本是 9.5.3。