Копирование подмножества таблиц из одной базы данных в другую с той же схемой - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь создать подмножество таблицы из одной таблицы в другую

пользователей (id, name, referrer_id, country_id)

Эта таблица имеет самоссылочную связьс referrer_id в качестве внешнего ключа к себе.

Я попытался выполнить следующий запрос

psql source_table -c 'COPY (SELECT * FROM users where country_id = 2) TO stdout' | psql target_table -c 'COPY users FROM stdin'

Проблема, связанная с описанным выше подходом, может относиться не к тому же подмножеству, поэтому будет отображаться ошибка

ОШИБКА:вставка или обновление таблицы «users» нарушает ограничение внешнего ключа «users_referrer_id_fk»

ДЕТАЛИ: Ключ (referrer_id) = (123) отсутствует в таблице «users».

Iпопытался использовать ON CONFLICT, но кажется, что синтаксис ON CONFLICT недоступен в синтаксисе COPY TABLE.Есть ли лучший способ передачи подмножества таблиц между базами данных

Я ищу что-то вроде этого

psql lx_default -c 'COPY (SELECT * FROM users where country_id = 97) TO stdout' | psql lx_hongkong -c 'COPY users FROM stdin ON CONFLICT DO SET users.referrer_id=null'

Выше SQL синтаксически неверно

...