标签: pg-restore

pg_dump忽略表序列?

我最近一直在玩PostgreSQL,并且无法理解如何备份和恢复单个表.

我使用pgadmin3备份数据库中的单个表,以便将其复制到其他服务器.当我尝试对文件执行pg_restore时,我收到错误消息,指出该序列不存在:

pg_restore: [archiver (db)] could not execute query: ERROR:  relation "businesses_id_seq" does not exist
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
    name character varyin...
Run Code Online (Sandbox Code Playgroud)

看起来转储文件不包含我的自动递增列的序列.如何将其包括在内?

postgresql pg-dump pg-restore

15
推荐指数
1
解决办法
2万
查看次数

还原远程计算机上的转储

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

postgresql dump remote-server pg-restore

15
推荐指数
3
解决办法
2万
查看次数

pgAdmin III中没有"备份和还原"选项

我必须备份我的数据库,但是当我右键单击数据库然后备份时,禁用备份按钮.同样在现有数据库中,由于"还原"按钮太禁用而无法还原.我工作正常,直到我创建一个新的数据库.

它们是如何启用的?

database postgresql backup pg-restore pgadmin

15
推荐指数
3
解决办法
1万
查看次数

pg_restore会覆盖现有的表吗?

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

postgresql pg-dump pg-restore psql postgresql-9.5

12
推荐指数
1
解决办法
1万
查看次数

没有模式名称的postgresql pg_dump

pg_dump版本10.3开始明确地将模式名称添加到表名.那是过去的

INSERT INTO table (id) VALUES (1);
Run Code Online (Sandbox Code Playgroud)

就是现在

INSERT INTO public.table (id) VALUES (1);
Run Code Online (Sandbox Code Playgroud)

你怎么能把它关掉?我的问题是,我将其转储到没有模式名称的mariadb中.

postgresql pg-dump pg-restore postgresql-10

12
推荐指数
1
解决办法
3386
查看次数

带-C选项的pg_restore不会创建数据库

我正在使用pg_dump和pg_restore来备份和恢复postgres数据库.

以下是与此问题相关的文档中的一些信息.对于Pg_restore,-C选项描述如下

-C

- 创建

在还原到数据库之前创建数据库.如果还指定了--clean,则>> drop并在连接之前重新创建目标数据库.使用此选项时,使用-d命名的数据库仅用于发出初始DROP DATABASE和CREATE DATABASE命令.所有数据都将还原到存档中显示的数据库名称中.

但是,即使我在pg_restore中使用此选项,也会出现以下错误

pg_restore:[archiver(db)]与数据库"test"的连接失败:致命:>数据库"test"不存在

根据描述,-C选项应该创建缺少的数据库.但是在我的情况下并不适用.

以下是我为备份和还原所做的步骤:

  1. 使用pg_dump备份数据库
pg_dump -N backup -d test --format custom -v -h xxhostxx -p 5432 -U xxuserxx --lock-wait-timeout 300000 -f test_pg_dump.dmp
Run Code Online (Sandbox Code Playgroud)

注意:不使用-C选项,因为它仅对纯文本格式有意义

  1. 删除了测试数据库

  2. 使用pg_resore恢复数据库

    pg_restore -C -d test -v -h xxhostxx -p 5432 -U xxuserxx test_pg_dump.dmp**
    
    Run Code Online (Sandbox Code Playgroud)

我无法理解这里的问题是什么!我做错了吗?如果需要更多信息,请与我们联系.

postgresql pg-dump pg-restore

11
推荐指数
3
解决办法
7919
查看次数

pg_restore: [archiver] postgres 中的输入文件太短错误

我正在尝试使用以下命令将数据库转储到本地系统中:

pg_restore --host=localhost --port=5432 --dbname=dev_db --no-owner --no-privileges db_dump_new.backup
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

pg_restore: [archiver] input file is too short (read 0, expected 5)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

postgresql database-dump pg-restore

10
推荐指数
2
解决办法
1万
查看次数

当警告出现时,pg_restore的退出代码出现问题

命令:

bin/pg_dump -b -o -Fc -Z 0 -p 5333 -U user template1 -f db.dump
bin/pg_restore -c  -h localhost -p 5333 -U user -d template1 db.dump 
Run Code Online (Sandbox Code Playgroud)

步骤如下:

  1. 将新表添加到DB并进行转储

  2. 删除新添加的表

  3. 尝试使用转储文件还原

  4. 使用代码1恢复退出但仍然可以成功恢复表.

pg_restore中的错误:
pg_restore:[archiver(db)]无法执行查询:err-1:表"test1"不存在
命令为:DROP TABLE public.test1;
警告:恢复时忽略错误:2

这是带有表添加/删除步骤的转储/恢复功能的预期行为吗?

postgresql pg-restore

9
推荐指数
1
解决办法
935
查看次数

恢复PostgreSQL数据库时创建SEQUENCE时出错

UserX有以下授权:

CREATE ROLE "UserX" LOGIN PASSWORD 'pass';
CREATE DATABASE "DBX" WITH OWNER="UserX" ENCODING='UTF8' TABLESPACE=pg_default CONNECTION LIMIT=-1;
GRANT CONNECT ON DATABASE "DBX" TO "UserX";
GRANT USAGE ON SCHEMA public TO "UserX";
GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO "UserX";
ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO "UserX";
ALTER DEFAULT PRIVILEGES GRANT ALL ON SEQUENCES TO "UserX";
Run Code Online (Sandbox Code Playgroud)

尝试将其转储还原到其他数据库时出现以下错误:

pg_restore: creating SEQUENCE "public.tblX_Id_seq"
pg_restore: [archiver (db)] Error from TOC entry 218; 1259 438745 SEQUENCE tblX_Id_seq UserX
pg_restore: [archiver (db)] …
Run Code Online (Sandbox Code Playgroud)

postgresql pg-restore postgresql-9.6

9
推荐指数
2
解决办法
6431
查看次数

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

我正在研究Postgres DVD教程,并且遇到导入其示例数据库的问题.

跑步pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar.gz给了我pg_restore: [archiver] input file does not appear to be a valid archive.

到目前为止,我的流程如下:

  1. 下载dvdrental.zip文件
  2. 使用tar czf dvd-database.tar.gz dvdrental.zip(我也尝试将zip解压缩到一个文件夹,结果相同,并删除.gz)将其解压缩到.tar
  3. pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar如上所述运行.

我目前正在使用Postgres 9.5,这可能会导致问题.寻找答案,指出我在这个过程中出错的地方或如何将Postgres数据库的存档更新到9.5.

postgresql tar pg-restore postgresql-9.5

8
推荐指数
1
解决办法
1万
查看次数