问题标签 [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.
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)完成时,我会在循环中等待延迟。
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 视频。它行不通。
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" 拓扑栅格
database - pg_restore:[compress_io] 无法解压缩数据:设置的代码长度无效
我pg_restore
在 Mac 中执行命令时遇到问题。它返回此错误:
我正在使用 postgres 9.6.2。
python - pg_dump & pg_restore 密码使用 python 模块子进程
问题:使用 PSQLpg_dump
并pg_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。
sql - 使用 pg_restore 创建或覆盖表
我知道这是一个奇怪的请求,但出于一些我无法避免的奇怪原因,我希望能够始终将几个表从一个数据库同步到另一个数据库。我知道我可以自己在脚本中写出功能,但我认为并将对我自己不知道的过程应用很多优化pg_dump
。pg_restore
我想知道是否有办法pg_restore
覆盖现有表。基本上,在伪代码中类似于:
如果这不是很好,我也愿意接受替代方法。
postgresql - pg_restore 会覆盖现有的表吗?
假设我有两个主机服务器 s1 和 s2。在这两个服务器中,我都有一个名为 n1 的模式,现在我对 s1 的模式 n1 中存在的一些表进行了一些更改。我希望对服务器 s2 的架构 n1 进行相同的更改。我打算做的是使用 pg_dump 备份服务器 s1 的架构 n1,并使用 pg_restore 在服务器 s2 中恢复。现在我的问题是,因为服务器 s2 中已经有相同的架构 n1 具有相同的表集。恢复过程会做什么?它会覆盖现有的表还是我应该删除服务器 s2 的现有模式并使用服务器 s1 的转储来恢复它?
postgresql - Postgresql 服务器到服务器复制
假设我有两个远程服务器 10.0.0.1 和 10.0.0.2。在两台服务器中,我都安装了带有相同数据库的 postgresql 数据库。现在我需要的是,对服务器 10.0.0.1 上的数据库所做的任何更改或更改都应自动复制到服务器 10.0.0.2 上的数据库中。有什么方法可以执行此自动化过程吗?如果是这样,请建议我这样做的最佳和最有效的方法。我使用的 postgresql 版本是 9.5.3。