从pg_dump中排除序列

时间:2018-08-20 15:24:33

标签: postgresql pg-dump

我正在创建一个postgres数据库(10.1)的导出,其中排除了一些表。我遵循了Is there a way to get pg_dump to exclude a specific sequence?中的说明。但是,仍然包含排除表的序列。有没有办法确保他们被拒之门外?

为解决此问题,我创建了一个带有示例表includeexclude的小型示例数据库,向每个表添加了一行,然后使用此命令导出数据库:

pg_dump --host=localhost --no-owner --no-acl --verbose --schema=public --dbname=export_test --exclude-table=exclude --file=exclude_table_only.dump

转储中不包含exclude表,但确实包含序列:

...
--
-- TOC entry 198 (class 1259 OID 3818320)
-- Name: exclude_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--

CREATE SEQUENCE exclude_id_seq
...

2 个答案:

答案 0 :(得分:4)

您应该能够使用另一个--exclude-table显式排除该序列:

--exclude-table=exclude_id_seq

最终应该看起来像这样:

$ pg_dump --host=localhost --no-owner --no-acl --verbose --schema=public --dbname=export_test --exclude-table=exclude --exclude-table=exclude_id_seq --file=exclude_table_only.dump

答案 1 :(得分:1)

要排除表格,

--exclude-table

将起作用。

要排除序列,

--exclude-table-data 

将是必需的。

Postgres 12

上进行了测试

我无法获取--exclude-table来排除序列(即表格数据)。

转储不包含序列的示例

$ pg_dump -v -C -Fp -O -x -h employee.us-east-1.rds.amazonaws.com \ 
          -U user1 -d emp -n empschema \ 
          --exclude-table="empschema.employee_history_id_seq" \ 
          -f dump-test.sql

where,
-v : verbose
-C : create Database commands in dump
-Fp : output file in plain Text
-O : no owner details in dump
-x : no privileges details in dump
-h : hostname
-U : username
-d : database
-n : schema
--exclude-table-data : excluding the sequence
-f : file to be written into

否则请发表评论。

https://www.postgresql.org/docs/12/app-pgdump.html