标签: pg-dump

在没有pg_dump的情况下转储数据库

有没有办法只使用psql转储postgres数据库(没有pg_dump)?谢谢.

postgresql pg-dump

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

在插入查询仍在运行时运行 pg_dump?

如果我运行pg_dump将表转储到 SQL 文件中,它是否会拍摄表中最后一行的快照,并将所有行转储到该行?

或者它是否继续转储所有行,甚至是pg_dump运行后插入的行?

第二个问题是:在运行之前停止所有插入查询是个好主意吗pg_dump

sql postgresql pg-dump

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

pg_dump --exclude-table模式匹配

问题

我使用pg_dump创建数据库的仅模式存档文件.我想通过省略转储中的一组分区表中的一个来减少此文件的大小(并减少还原时间).

例如,数据库中有以下分区表(按日期).我只想保留最后一个.

awp_partition.awp_text_search_history_201209
awp_partition.awp_text_search_history_201210
awp_partition.awp_text_search_history_201211
awp_partition.awp_text_search_history_201212
plus hundreds more...
Run Code Online (Sandbox Code Playgroud)

我创建了一个pg_dump命令(在bash脚本中调用),用于排除所有这些表,除了使用负前瞻正则表达式的最新表:

pg_dump -h 11.111.11.11 -p 5432 -U username -F c -s \
-T 'awp_partition.awp_text_search_history_(?!201212)\d{6}' \
dbname > /home/me/tmp/prod3.backup
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此命令时,所有表都从转储文件中排除.

我试过的

我尝试使用表包含和排除参数的组合,但尝试排除所有表,同时包括一个 - 与排除模式匹配 - 导致整个转储失败.

我使用Postgres regexp_matches()函数测试了我的正则表达式,它正确匹配了我预期的表.但是,基于文档: pg_dump文档

仅转储匹配表的表(或视图或序列或外表).通过写多个-t开关可以选择多个表.此外,table参数根据psql的\ d命令使用的相同规则解释为模式(请参阅模式),因此也可以通过在模式中编写通配符来选择多个表.使用通配符时,如果需要,请小心引用模式以防止shell扩展通配符;

以及psql模式文档的相关文档

高级用户可以使用正则表达式表示法(例如字符类),例如[0-9]来匹配任何数字.所有正则表达式特殊字符都按照第9.7.3节的规定工作,除了.它被视为如上所述的分隔符,*被转换为正则表达式表示法.,?翻译为.,和字面匹配的$.你可以通过写作来模仿这些模式字符吗?对于R,(R + |),对于R,(R |).$不需要作为正则表达式字符,因为模式必须与整个名称匹配,这与正则表达式的通常解释不同(换句话说,$会自动附加到您的模式).如果您不希望锚定模式,请在开头和/或结尾写入*.请注意,在双引号内,所有正则表达式特殊字符都会失去其特殊含义并按字面​​匹配.此外,正则表达式特殊字符在运算符名称模式(即\ do的参数)中按字面匹配.

我意识到在此操作中可能不支持负向前瞻操作符的语法.

该怎么办?

看起来我需要改变我的模式匹配策略,而我正在努力想办法用psql\d模式排除除了其中一个表之外的所有表.有任何想法吗?

regex postgresql pg-dump

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

Postgresql:备份所有表结构但只有几个数据表

我有一个数据库,其中包含一些应用程序设置表,用户,部门,城市等列表.我想要那些表的结构和数据.因此,如果我得到一个新用户,备份将保存它.

但是也有一些历史和计算数据的数据,这些数据来自其他来源,只能工作一段时间然后到期,所以备份这些数据将是一种浪费.但是需要有结构,所以恢复将创建需要它的表用于应用程序.

现在我正在使用此命令,但这会保存所有表和所有数据.

pg_dump -U "postgres" -h "local" -p "5432" 
        -d dbName -F c -b -v -f c:\uti\backup.dmp
Run Code Online (Sandbox Code Playgroud)

我还有2个关于pg_dump的问题.

A)docs说选项-b用于blob数据.我有非常大的表,但我想这个选项仅用于具有BLOB字段的表,所以我的备份不应该有任何区别,因为我没有这些字段?

B)我看到pg_dump选项用于表和模式.如何指定是否要保存函数代码?

postgresql pg-dump database-backups

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

我怎样才能将物化视图作为物化视图pg_dump而不是表格?

我正在尝试将pg_dump(v9.3.4)从一个db和pg_restore转换为另一个(v9.3.6).我有几个物化视图(一些具有索引,一些没有索引).我的一个物化视图被转储为一个表(我已经通过查看pg_dump输出确认了这一点).如何将其作为物化视图转储?

这是我在pg_dump输出中看到的内容:

CREATE TABLE my_mv (
  /* ... */
);

/* ... */

CREATE INDEX my_mv_col_1_idx ON my_mv USING btree (col_1);

/* ... */

CREATE RULE "_RETURN" AS
    ON SELECT TO my_mv DO INSTEAD  WITH tmp_1 AS (

/* ... */
Run Code Online (Sandbox Code Playgroud)

我的其他MV看起来像这样:

CREATE MATERIALIZED VIEW my_good_mv AS
  SELECT /* ... */
WITH NO DATA;

/* ... */

CREATE INDEX my_good_mv_job_col_1_idx ON my_good_mv USING btree (col_1);

/* ... */

REFRESH MATERIALIZED VIEW my_good_mv;
Run Code Online (Sandbox Code Playgroud)

我已经证实这是一个MV:

xxx=# SELECT relkind FROM pg_class WHERE oid …
Run Code Online (Sandbox Code Playgroud)

postgresql pg-dump materialized-views

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

如果不在Alpine上安装postgres,我可以安装pg_dump吗?

我试图安装pg_dump作为postgres-client安装的一部分,但它不包括pg_dump.可以在没有在Alpine linux上完全安装postgres的情况下安装pg_dump吗?

postgresql pg-dump alpine-linux

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

在PostgreSQL上创建数据库转储时出错

当尝试进行postgreSQL数据库转储时,我们收到以下错误,并且该过程立即停止.

使用的命令:

openbravo@master.akluck.com:~

07/26 11:48:11> pg_dump -U tad -h localhost -p 5932 -F c -b -v -f /home/openbravo/dump26072018.dmp openbravo
Run Code Online (Sandbox Code Playgroud)

输出:

pg_dump: reading schemas

pg_dump: reading user-defined tables

pg_dump: schema with OID 67046 does not exist

pg_dump: *** aborted because of error
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我如何排序这个问题?

更新:

我按照本教程

http://www.aukema.org/2011/06/fixing-complex-corruption-in-my-dna.html

我可以看到pg_tables中有没有schemaname的对象.

在此输入图像描述

但我不知道如何在pg_tables中更新那些丢失的schemanames.本教程的最后一部分并不十分解释.希望有人可以投入一些光.

postgresql pg-dump

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

PostgreSQL 9.0.13执行pg_restore但没有证据表明正在使用磁盘空间

我正在尝试从另一台服务器恢复使用此命令获取的pg_dump.

sudo -u postgres pg_dump --verbose --format=custom --file=pg-backup.sql -U postgres salesDB
Run Code Online (Sandbox Code Playgroud)

复制pg-backup.sql文件后,我正在尝试使用此命令进行恢复

sudo -u postgres pg_restore --verbose --jobs=`nproc` -f pg-backup.sql
Run Code Online (Sandbox Code Playgroud)

pg-backup.sql文件是13GB.pg-restore已经运行了4个小时,一直在我的屏幕上滚动数据.没有错误.

但是当我从psql会话中执行此语句时

SELECT pg_size_pretty(pg_database_size('salesDB'));
Run Code Online (Sandbox Code Playgroud)

我的大小为5377 kB.什么?它至少应该是1GB.我完全迷失了.所有这些数据都在我的屏幕上滚动,我无法证明它会在任何地方.没有磁盘使用.

救命

postgresql space pg-dump disk pg-restore

7
推荐指数
2
解决办法
3427
查看次数

如何在 Hasura 上进行 postgres 数据备份

我想将我的数据从 HasuraDB 的 pg_dump 带到我的本地机器。推荐的方法是什么?

postgresql pg-dump hasura

7
推荐指数
3
解决办法
3131
查看次数

将 postgresql 本地复制到远程数据库(均带有密码)-错误:无法识别选项“locale”

使用 Postgres 12 / Windows 10。

尝试使用以下命令将远程数据库复制到 localhost:

pg_dump -C -h remotehost -p 5432 -U postgres remotedb | psql -h localhost -p 5432 -U postgres localdb

CMD 请求密码 2x。

Password for user postgres: Password:

我先输入 localhost,按 ENTER,然后输入 remotehost 并再次按 ENTER。

这是我得到的错误回报:

SET
SET
SET
SET
SET
 set_config
------------

(1 row)

SET
SET
SET
SET
ERROR:  option "locale" not recognized
LINE 1: ...ting" WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = '...
                                                             ^
ERROR:  database "remotedb" does not exist
\connect: …
Run Code Online (Sandbox Code Playgroud)

postgresql pg-dump psql postgresql-12 postgresql-13

7
推荐指数
2
解决办法
1470
查看次数