Postgres:pg_restore / pg_dump一切,除了表的表ID

bdd*_*bdd 5 postgresql pg-dump pg-restore

目前,我正在做类似的事情:

pg_dump -a -O -t my_table my_db > my_data_to_import.sql
Run Code Online (Sandbox Code Playgroud)

我真正想要的是能够仅导入/导出数据,而不会引起与autoid字段的冲突或覆盖现有数据。

也许我在考虑整个过程错了吗?

Grz*_*ski 5

您可以将COPY与列列表一起使用,以仅转储和还原一个表中的数据。例如:

COPY my_table (column1, column2, ...) TO 'yourdumpfilepath';
COPY my_table (column1, column2, ...) FROM 'yourdumpfilepath';
Run Code Online (Sandbox Code Playgroud)

OID是系统列之一。例如,它不包含在中SELECT * FROM my_table(您需要使用SELECT oid,* FROM my_table)。OID与CREATE TABLE中的其他列创建的普通id列不同。并非每个表都有OID列。检查default_with_oids选项。如果将其设置为off,则probalby在表中没有OID列,但是即使这样,您仍然可以使用WITH OIDSoption 使用OID创建表。建议不要使用OID作为表的列(这就是在PostgreSQL 8.1之前将default_with_oids设置为off的原因)。