postgresql 从pg_dump中排除序列

fcipmucu  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(3)|浏览(335)

我正在创建一个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
...
3htmauhk

3htmauhk1#

您应该能够使用另一个--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
klsxnrf1

klsxnrf12#

对于排除表,

--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

3b6akqbq

3b6akqbq3#

下面的pg_dump.exe将为您提供给定数据库中表的独占模式。pg_dump.exe -h本地主机-d数据库-W -U用户名-p 5XX 2-T m_19* -T m_200* -T m_201* -f dbsave.sql
其中排除的表格为m_19*、m_200* 和m_201等。

相关问题