Я использую следующие команды ниже в postgresql 9.1.3 для перемещения данных из временной промежуточной таблицы в таблицу, используемую в веб-приложении (геосервере), все в той же базе данных. Затем удалить временную таблицу.
ОБРЕЗАТЬ table_foo;
ВСТАВИТЬ В table_foo
ВЫБЕРИТЕ * ИЗ table_temp;
УДАЛИТЬ ТАБЛИЦУ table_temp;
Я хочу обернуть это в транзакцию, чтобы обеспечить параллелизм. Набор данных меньше 2000 строк, и усечение выполняется быстрее, чем удаление.
- Каков наилучший способ запуска этих команд в транзакции?
- Целесообразно ли создавать функцию или писать UPSERT/MERGE и т. д. в CTE?
- Было бы лучше УДАЛИТЬ все строки, а затем выполнить массовую ВСТАВКУ из временной таблицы вместо TRUNCATE?
- В postgres что бы разрешить откат TRUNCATE или DELETE?
- Временная таблица доставляется ежедневно через сценарий ETL в arcpy. Как я могу автоматизировать части усечения/удаления/массовой вставки в postgres?
- Я готов использовать PL/pgsql, PL/python (или рекомендуемый py для postgres)
В настоящее время я вручную выполняю команды sql после импорта временной промежуточной таблицы в мою БД.