29.2. Копирование OLAP-данных из таблиц-куч в аналитическую таблицу (metastore.copy_table) #

Вы можете использовать SQL-команду, чтобы скопировать OLAP-данные из таблиц-куч в аналитическую таблицу.

Требуемые права:

  • Право INSERT на аналитическую таблицу.

  • Право на выполнение SQL-команды, которая передаётся вторым параметром.

За подробной информацией о хранимых процедурах и правах на них обратитесь к Разделу 22.1.

Выполните следующую команду:

  SELECT metastore.copy_table('имя_таблицы', SQL-команда, 'путь_к_JSON');

Где:

  • имя_таблицы: имя аналитической таблицы, в которую копируются OLAP-данные.

  • SQL-команда: SQL-команда, которая извлекает OLAP-данные из таблиц-куч, например SELECT * FROM my_pgtable.

    Функции вне схемы pg_catalog не поддерживаются.

  • путь_к_JSON: путь к JSON-файлу с параметрами хранения Parquet-файлов.

    Эти параметры применяются при создании новых Parquet-файлов. В хранимой процедуре metastore.add_files параметры игнорируются для несекционированных таблиц, так как Parquet-файлы добавляются в изначальном виде, но применяются для секционированных таблиц, где Parquet-файлы разделяются на несколько файлов. В хранимой процедуре metastore.copy_table параметры применяются всегда, поскольку из результатов SQL-команды создаются новые Parquet-файлы.

    За подробной информацией о секционировании обратитесь к Главе 30.

    Необязательный параметр.

Postgres Pro AXE выполняет следующие действия:

  1. Проверяет параметры ввода и права пользователя.

  2. Создаёт временный каталог хранилища для результатов SQL-команды.

  3. Выполняет SQL-команду и создаёт Parquet-файлы с её результатами.

  4. Проверяет, что метаданные Parquet-файлов и аналитической таблицы совместимы: количество, порядок, имена и типы столбцов должны совпадать.

  5. Создаёт новые записи в таблицах метаданных pga_snapshot и pga_data_file.

  6. Копирует Parquet-файлы в каталог хранилища аналитической таблицы в новый подкаталог, именем которого является идентификатор снимка.

    Если Parquet-файлы добавляются в секционированную аналитическую таблицу, они разделяются на несколько файлов по столбцам секции и для этих файлов создаётся дерево каталогов.

  7. Обновляет статистику в таблицах метаданных pga_table_stats, pga_table_column_stats и pga_file_column_statistics.

Пример 29.2. Выполнение хранимой процедуры metastore.copy_table

  SELECT metastore.copy_table('my_metastore_table', $$select * from my_pgtable$$, 'folder/options.json');