Приложение D. Сценарий подключения к S3-хранилищу

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

Перед выполнением этого сценария:

  1. Установите Postgres Pro AXE.

  2. Настройте каталог pgpro_metastore.

Чтобы подключиться к S3-хранилищу:

  1. Установите значение true для параметров конфигурации duckdb.unsafe_allow_execution_inside_functions и duckdb.convert_unsupported_numeric_to_double:

    ALTER SYSTEM SET duckdb.unsafe_allow_execution_inside_functions TO true;
    SET duckdb.convert_unsupported_numeric_to_double = true;
  2. Перезагрузите сервер Postgres Pro AXE:

    SELECT pg_reload_conf();
  3. Создайте простой секрет с помощью функции duckdb.create_simple_secret.

    Пример D.1.

    SELECT duckdb.create_simple_secret(
          type          := 'S3',
          key_id        := 'access_key_ID_example',
          secret        := 'simple_secret_example',
          region        := '',
          url_style     := 'path',
          endpoint      := 'hostname:port',
          use_ssl       := 'false');

  4. Создайте S3-хранилище.

    Пример D.2.

      SELECT metastore.add_storage('s3_storage_example', 's3://demo/s3_storage_example/','s3://demo/s3_storage_example/tmp/');

  5. Убедитесь, что S3-хранилище правильно настроено:

    1. Создайте таблицу-кучу с помощью команды CREATE TABLE.

      Пример D.3.

      CREATE TABLE heap_table_example (id int4 NULL, "name" text NULL, price numeric(10,2) NULL, created_at timestamp NULL);

    2. Вставьте строки в таблицу-кучу с помощью команды INSERT.

      Пример D.4.

      INSERT INTO heap_table_example VALUES (1, 'Item 1', 150.99, '2025-08-09 00:01:01.75');
      INSERT INTO heap_table_example VALUES (2, 'Item 2', 300.99, '2025-08-10 00:01:01.75');

    3. Создайте аналитическую таблицу из таблицы-кучи.

      Пример D.5.

      SELECT metastore.add_table('analytical_table_example', 's3_storage_example', 'public.heap_table_example', '');

    4. Скопируйте OLAP-данные в аналитическую таблицу из таблицы-кучи.

      Пример D.6.

      SELECT metastore.copy_table('analytical_table_example', $$select * from heap_table_example$$);

    5. Создайте представление Postgres Pro из аналитической таблицы.

      Пример D.7.

      SELECT metastore.create_view('analytical_table_example');

    6. Убедитесь, что значения, которые вы вставили в таблицу-кучу, можно получить из аналитической таблицы.

      Пример D.8.

      SELECT * from analytical_table_example;