Загрузка данных из временных таблиц
меньше минуты
При использовании временных таблиц в качестве источника, необходимо учитывать особенности конкретной СУБД.
PostgreSQL
При создании временной таблицы вы не можете явно указать схему (schema
) для таблицы. Все временные таблицы в PostgreSQL попадают в соответствующую схему с именем pg_temp_xxx
, где «xxx» — номер сессии (например pg_temp_8
или pg_temp_165
).
Схема для сессии создаётся автоматически самим PostgreSQL.
Для возможности сделать запрос к временной таблице, необходимо указать правильную схему, что является не тривиальной задачей при периодическом обновлении. Скорее всего понадобится специальная обработка для ETL.
Если подразумевается единоразовая выгрузка, то необходимо определить схему, в которой создалась временная таблица и указать её в запросе либо в шаблоне сценария.
Запрос должен строится следующем образом:
SELECT col1, col2, col-n From pg_temp_xxx.tmp_table_name
где «xxx» — номер сессии, а tmp_table_name
— наименование временной таблицы.
Для определения схемы временной таблицы можно воспользоваться запросом:
SELECT schemaname FROM pg_catalog.pg_tables where tablename ='tmp_table_name'
MS SQL
После создания все временные таблицы сохраняются в схеме tempdb, которая имеется по умолчанию в MS SQL. Временные таблицы существуют на протяжении сессии базы данных.
Для взаимодействия с временными таблицами MS SQL через ETL, они должны быть глобальными, т.е. при создании указывается два знака ##
.
Так же в запросе указывается схема временной таблицы:
SELECT * FROM tempdb.##tmp_table_name