5

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

pg_dump -a -O -t my_table my_db > my_data_to_import.sql

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

也许我在想整个过程是错误的?

4

2 回答 2

5

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

COPY my_table (column1, column2, ...) TO 'yourdumpfilepath';
COPY my_table (column1, column2, ...) FROM 'yourdumpfilepath';

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

于 2011-06-03T15:01:22.087 回答
0
pg_dump --insert -t TABLENAME DBNAME > fc.sql
       cat fc.sql | sed -e 's/VALUES [(][0-9][0-9],/VALUES (/g'|sed -e 's/[(]id,/(/g' > fce.sql
       psql -f fce.sql DBNAME

这会将带有列的表转储到 fc.sql 中,然后使用 sed 删除 id 以及与之关联的值

于 2019-06-14T14:27:27.677 回答