А чем плох вариант обновления через UPDATE? Естественно, всё должно быть в рамках одной транзакции.
У меня обычно полный перенос таблицы выглядит так:
1. Начать транзакцию
2. По всем таблицам
2a. Всем строкам таблицы выставить поле `updated` = 0
2b. Перенести строки через INSERT ON DUPLICATE KEY UPDATE с изменением `updated` = 1
2c. Удалить строки, где `updated` = 0
3. Завершить транзакцию