У меня есть веб-приложение, работающее на основе таблицы базы данных, созданной из файла CSV.
Эта таблица должна часто обновляться из CSV. Таблица должна точно соответствовать csv, т. Е. Если запись больше не существует в csv, она больше не должна существовать в таблице или должна быть мягко удалена.
Как правильно это сделать?
Кажется, самый простой способ будет:
- создать временную таблицу
- импорт csv во временную таблицу
- drop live table
- переименование временной таблицы в имя действующей таблицы
Это будет написано в приложении, поэтому я не думаю, что время простоя будет таким большим, как удаление таблицы и переименование не должно занимать слишком много времени, но это не кажется самым безопасным способом сделать что-то, поскольку есть момент где нет таблицы.
Я попытался вместо этого сделать:
- создать временную таблицу
- импорт csv во временную таблицу
- обновить записи в оперативной таблице данными из временной таблицы
- удалить записи в реальной таблице, которые не существуют во временной таблице
Теоретически это звучало лучше, но очень медленно. Первый способ занимает всего несколько секунд. Второй способ - обновление занимает очень много времени. Я оставил его на 10 минут, прежде чем отменить его, так как оно не было завершено.
Я сделал обновление следующим образом:
update table_name as t
set
column1 = t.column1,
column2 = t.column2,
-- etc..
from table_name_temp
Как правильно справиться с этой ситуацией?