Я работаю над хобби-приложением, которое будет содержать большое количество жестко закодированных данных, а также динамические пользовательские данные после его развертывания. Мне нужна возможность локально обновлять жестко закодированные данные (больше UPDATE
с, чем INSERT
с), а затем экспортировать эти данные на сервер. Другими словами, мне нужно выгрузить данные в файл и импортировать их таким образом, чтобы новые строки (которых будет относительно немного) были INSERT
обработаны, а существующие строки (как указано в PK) - UPDATE
д. Ясно, что новые строки не могут быть INSERT
отредактированы на сервере (или PK могут потенциально конфликтовать и выдавать ошибочные UPDATE
s); это приемлемое ограничение. Однако я не могу DELETE
строк быть UPDATE
d, не говоря уже о удалении синхронизированных таблиц, поскольку таблицы, доступные для пользователя, будут иметь ограничения FK для «статических» таблиц.
К сожалению, это, кажется, очень сложно сделать. Списки рассылки Google и Postgres сообщают мне, что «MySQL-подобная» функция on_duplicate_key_update
«будет в новой версии» (устаревшая информация; она есть?) Вместе с предложением «pg_loader can do it
» без указания как .
В худшем случае я полагаю, что могу придумать домашнее решение (выгрузить файл данных, написать собственный скрипт импорта, который проверяет конфликты PK и выдает INSERT
или UPDATE
операторы соответственно) , но это кажется ужасно неуклюжим решением проблемы, с которой наверняка сталкивались другие до меня.
Есть мысли?