Postgres: pg_restore / pg_dump все, кроме ИД таблицы для таблицы - PullRequest
4 голосов
/ 03 июня 2011

В настоящее время я делаю что-то вроде:

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

Что я действительно хочу, так это иметь возможность импортировать / экспортировать только данные, не вызывая конфликтов с моим полем autoid и не перезаписывая существующие данные.

Может быть, я думаю, что весь процесс не так?

Ответы [ 2 ]

4 голосов
/ 03 июня 2011

Вы можете использовать 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 . Не каждая таблица имеет столбец OID. Установите флажок default_with_oids . Если он выключен, то, вероятно, у вас нет столбца OID в вашей таблице, но даже если это так, тогда вы все равно можете создать таблицу с OID, используя опцию WITH OIDS. Рекомендуется не использовать OID в качестве столбца таблицы (поэтому default_with_oids отключен до PostgreSQL 8.1).

0 голосов
/ 14 июня 2019
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 для удаления идентификатора и связанного с ним значения

...