Я хочу объединить данные из одной базы данных в другую. Поэтому я создаю дамп с, mysqldump
а затем импортирую его в другую базу данных (с той же структурой таблиц). У меня нет никаких проблем (таких как повторяющиеся записи или что-то еще) в этом случае.
Но я делаю некоторые слияния для целей тестирования, и я сделаю окончательное слияние позже. Итак, я хочу выполнить слияние (данные могут быть изменены) несколько раз. Обратите внимание, мои строки в моих таблицах никогда не удаляются, только могут быть вставлены или обновлены.
Могу ли я создать mysqldump с опцией ON DUPLICATE? Или, может быть, я могу объединить дамп, который вставляет новые данные и обновляет измененные данные?
Конечно, я могу вставить ON DUPLICATE
в дамп вручную, но я хочу автоматизировать процесс слияния.
--replace
это эквивалентно действию вON DUPLICATE UPDATE
каждом столбце. К сожалению, mysqldump не предназначен для обновления определенных столбцов из-за массовой загрузки и вывода дампов mysqldump. Мой ответ просто показывает, на что способен mysqldump. Вы должны написать собственный код, кроме mysqldump, чтобы сделатьON DUPLICATE UPDATE
.REPLACE INTO
может завершиться неудачей, поскольку запись не может быть удалена с разрывом этих связей. Если даON DELETE CASCADE
, то вы будете очищать те таблицы, которые зависят от обновляемой.REPLACE INTO
довольно опасная операция.REPLACE INTO
) могут быть опасными и иметь «удивительный» эффект. Хороший ответ - просто хотел добавить оговорку.