Загрузка данных из временных таблиц

При использовании временных таблиц в качестве источника, учитывайте особенности конкретной СУБД.

 

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