24.3. Сценарий: подключение к S3-хранилищу #

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

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

Чтобы настроить этот сценарий:

  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. Создайте простой секрет.

    Пример 24.4.

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

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

    Пример 24.5.

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

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

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

      Пример 24.6.

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

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

      Пример 24.7.

      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. Создайте аналитическую таблицу из таблицы-кучи.

      Пример 24.8.

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

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

      Пример 24.9.

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

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

      Пример 24.10.

      SELECT metastore.create_view('analytical_table_example');

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

      Пример 24.11.

      SELECT * FROM analytical_table_example;