Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex MPP Analytics for PostgreSQL
KZ
  • Начало работы
    • Все инструкции
      • Обзор
      • Создание внешней таблицы
      • Изменение настроек PXF
    • Подключение к внешнему файловому серверу (gpfdist)
    • Вспомогательные утилиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Создать foreign-таблицу
  • Примеры создания foreign-таблиц
  • Создать external-таблицу
  • Примеры создания external-таблиц
  1. Пошаговые инструкции
  2. Работа с PXF
  3. Создание внешней таблицы

Создание внешней таблицы по протоколу PXF

Статья создана
Yandex Cloud
Обновлена 21 мая 2026 г.
  • Перед началом работы
  • Создать foreign-таблицу
    • Примеры создания foreign-таблиц
  • Создать external-таблицу
    • Примеры создания external-таблиц

Yandex MPP Analytics for PostgreSQL позволяет создавать external-таблицы для доступа к данным во внешних СУБД. В кластерах с СУБД Apache Cloudberry™ кроме external-таблиц также можно создавать foreign-таблицы с использованием механизма FDW. Такие таблицы предоставляют доступ к тем же внешним СУБД, что и external-таблицы. При этом foreign-таблицы поддерживают чтение и запись в рамках одной таблицы, тогда как external-таблицы — либо чтение, либо запись.

Механизм FDW поддерживает следующие типы внешних источников данных:

  • s3_pxf_fdw
  • jdbc_pxf_fdw
  • hdfs_pxf_fdw
  • hive_pxf_fdw

External-таблицы создаются с помощью SQL-запроса CREATE EXTERNAL TABLE, а foreign-таблицы — CREATE FOREIGN TABLE.

Перед началом работыПеред началом работы

  1. В подсети кластера Yandex MPP Analytics for PostgreSQL настройте NAT-шлюз и привяжите таблицу маршрутизации.

  2. В сети кластера Yandex MPP Analytics for PostgreSQL создайте группу безопасности, разрешающую весь входящий и исходящий трафик со всех адресов.

  3. Создайте внешний источник данных. Инструкции по созданию зависят от типа подключения источника:

    • S3
    • JDBC
    • HDFS
    • Hive

Создать foreign-таблицуСоздать foreign-таблицу

Синтаксис SQL-запроса на создание foreign-таблицы:

CREATE FOREIGN TABLE <имя_таблицы>
  (<имя_столбца> <тип_данных> [, ...])
  SERVER "<локальное_имя_источника>"
  OPTIONS (
    resource '<путь_к_данным_или_имя_таблицы>'
  );

Где:

  • <имя_таблицы> — имя внешней таблицы в кластере Yandex MPP Analytics for PostgreSQL.
  • <имя_столбца> — имя столбца.
  • <тип_данных> — тип данных столбца. Должен совпадать с типом соответствующего столбца во внешней СУБД.
  • <локальное_имя_источника> — локальное имя внешнего источника данных.
  • <путь_к_данным_или_имя_таблицы> — путь к данным или имя таблицы на внешнем источнике.

Примеры создания foreign-таблицПримеры создания foreign-таблиц

ClickHouse®
MySQL®
PostgreSQL
Object Storage
  1. Создайте кластер Yandex Managed Service for ClickHouse® с именем пользователя chuser.

  2. В группу безопасности кластера Managed Service for ClickHouse® добавьте правила, разрешающие весь входящий и исходящий трафик.

  3. Создайте таблицу в ClickHouse® и заполните ее данными:

    1. Подключитесь к БД ClickHouse® с помощью утилиты clickhouse-client.

    2. Создайте таблицу test:

      CREATE TABLE test (
        a INT,
        b INT
      ) ENGINE = Memory;
      
    3. Добавьте данные:

      INSERT INTO test (a, b)
      VALUES (1, 11), (2, 22);
      
  4. Получите доступ к внешним данным в Yandex MPP Analytics for PostgreSQL:

    1. Подключитесь к БД в сервисе Yandex MPP Analytics for PostgreSQL.

    2. Создайте внешний источник данных:

      CREATE SERVER "chserver"
        FOREIGN DATA WRAPPER jdbc_pxf_fdw
        OPTIONS (
          jdbc_driver 'com.clickhouse.jdbc.ClickHouseDriver',
          db_url 'jdbc:clickhouse:http://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:8123/<имя_БД>',
          user 'chuser',
          pass '<пароль>'
        );
      

      Где db_url — особый FQDN, который всегда указывает на доступный хост кластера Managed Service for ClickHouse®.

      Идентификатор кластера можно получить со списком кластеров в каталоге.

      Если для хостов ClickHouse® включен публичный доступ, при создании внешней таблицы необходимо использовать шифрованное соединение. Для этого укажите в запросе параметры SSL, используйте протокол https и порт 8443:

      CREATE SERVER "chserver"
        FOREIGN DATA WRAPPER jdbc_pxf_fdw
        OPTIONS (
          ssl 'true',
          sslmode 'strict',
          sslrootcert '/etc/greenplum/ssl/allCAs.pem',
          jdbc_driver 'com.clickhouse.jdbc.ClickHouseDriver',
          db_url 'jdbc:clickhouse:https://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:8443/<имя_БД>',
          user 'chuser',
          pass '<пароль>'
        );
      
    3. Создайте сопоставление локального пользователя с пользователем на внешнем источнике:

      CREATE USER MAPPING FOR CURRENT_USER
        SERVER "chserver";
      
    4. Создайте внешнюю таблицу fdw_ch, которая будет ссылаться на таблицу test в кластере ClickHouse®:

      CREATE FOREIGN TABLE fdw_ch (
        a INT,
        b INT
      )
      SERVER "chserver"
      OPTIONS (
        resource 'test'
      );
      
    5. Получите данные из внешней таблицы:

      SELECT * FROM fdw_ch;
      
    6. Добавьте данные во внешнюю таблицу:

      INSERT INTO fdw_ch (a, b)
      VALUES (3, 33);
      
  1. Создайте кластер Yandex Managed Service for MySQL® с публичным доступом к хостам и именем пользователя mysqluser.

  2. В группу безопасности кластера Managed Service for MySQL® добавьте правила, разрешающие весь входящий и исходящий трафик.

  3. Создайте таблицу в MySQL® и заполните ее данными:

    1. Подключитесь к БД MySQL® с помощью утилиты mysql.

    2. Создайте таблицу test:

      CREATE TABLE test (
        a INT,
        b INT
      );
      
    3. Добавьте данные:

      INSERT INTO test (a, b)
      VALUES (1, 11), (2, 22);
      
  4. Получите доступ к внешним данным в Yandex MPP Analytics for PostgreSQL:

    1. Подключитесь к БД в сервисе Yandex MPP Analytics for PostgreSQL.

    2. Создайте внешний источник данных:

      CREATE SERVER "myserver"
        FOREIGN DATA WRAPPER jdbc_pxf_fdw
        OPTIONS (
          jdbc_driver 'com.mysql.jdbc.Driver',
          db_url 'jdbc:mysql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:3306/<имя_БД>',
          user 'mysqluser',
          pass '<пароль>'
        );
      

      Где db_url — особый FQDN, который всегда указывает на текущий хост-мастер в кластере Managed Service for MySQL®.

      Идентификатор кластера можно получить со списком кластеров в каталоге.

    3. Создайте сопоставление локального пользователя с пользователем на внешнем источнике:

      CREATE USER MAPPING FOR CURRENT_USER
        SERVER "myserver";
      
    4. Создайте внешнюю таблицу fdw_mysql, которая будет ссылаться на таблицу test в кластере MySQL®:

      CREATE FOREIGN TABLE fdw_mysql (
        a INT,
        b INT
      )
      SERVER "myserver"
      OPTIONS (
        resource 'test'
      );
      
    5. Получите данные из внешней таблицы:

      SELECT * FROM fdw_mysql;
      
    6. Добавьте данные во внешнюю таблицу:

      INSERT INTO fdw_mysql (a, b)
      VALUES (3, 33);
      
  1. Создайте кластер Yandex Managed Service for PostgreSQL с публичным доступом к хостам и именем пользователя pguser.

  2. В группу безопасности кластера Managed Service for PostgreSQL добавьте правила, разрешающие весь входящий и исходящий трафик.

  3. Создайте таблицу в PostgreSQL и заполните ее данными:

    1. Подключитесь к БД PostgreSQL с помощью утилиты psql.

    2. Создайте таблицу test:

      CREATE TABLE public.test (
        a INT,
        b INT
      );
      
    3. Добавьте данные:

      INSERT INTO public.test (a, b)
      VALUES (1, 11), (2, 22);
      
  4. Получите доступ к внешним данным в Yandex MPP Analytics for PostgreSQL:

    1. Подключитесь к БД в сервисе Yandex MPP Analytics for PostgreSQL.

    2. Создайте внешний источник данных:

      CREATE SERVER "pgserver"
        FOREIGN DATA WRAPPER jdbc_pxf_fdw
        OPTIONS (
          jdbc_driver 'org.postgresql.Driver',
          db_url 'jdbc:postgresql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:6432/<имя_БД>',
          user 'pguser',
          pass '<пароль>'
        );
      

      Где db_url — особый FQDN, который всегда указывает на текущий хост-мастер в кластере Managed Service for PostgreSQL.

      Идентификатор кластера можно получить со списком кластеров в каталоге.

    3. Создайте сопоставление локального пользователя с пользователем на внешнем источнике:

      CREATE USER MAPPING FOR CURRENT_USER
        SERVER "pgserver";
      
    4. Создайте внешнюю таблицу fdw_pg, которая будет ссылаться на таблицу public.test в кластере PostgreSQL:

      CREATE FOREIGN TABLE fdw_pg (
        a INT,
        b INT
      )
      SERVER "pgserver"
      OPTIONS (
        resource 'public.test'
      );
      
    5. Получите данные из внешней таблицы:

      SELECT * FROM fdw_pg;
      
    6. Добавьте данные во внешнюю таблицу:

      INSERT INTO fdw_pg (a, b)
      VALUES (3, 33);
      
  1. Создайте сервисный аккаунт fdw-agent и назначьте ему роль storage.editor для доступа к бакету Object Storage.

  2. Создайте бакет Object Storage с ограниченным доступом.

  3. Предоставьте разрешение READ и WRITE для сервисного аккаунта fdw-agent на созданный бакет.

  4. Создайте статический ключ доступа.

  5. Подготовьте тестовый файл и загрузите его в бакет:

    1. На локальной машине создайте тестовый файл test.csv:

      1,11
      2,22
      
    2. Загрузите в бакет файл test.csv.

  6. Получите доступ к внешним данным в Yandex MPP Analytics for PostgreSQL:

    1. Подключитесь к БД в сервисе Yandex MPP Analytics for PostgreSQL.

    2. Создайте внешний источник данных:

      CREATE SERVER "objserver"
        FOREIGN DATA WRAPPER s3_pxf_fdw
        OPTIONS (
          accesskey '<идентификатор_статического_ключа_доступа>',
          secretkey '<секретный_ключ_доступа>',
          endpoint 'storage.yandexcloud.kz'
        );
      
    3. Создайте сопоставление локального пользователя с пользователем на внешнем источнике:

      CREATE USER MAPPING FOR CURRENT_USER
        SERVER "objserver";
      
    4. Создайте внешнюю таблицу fdw_s3, которая будет ссылаться на таблицу test.csv в бакете:

      CREATE FOREIGN TABLE fdw_s3 (
        a INT,
        b INT
      )
      SERVER "objserver"
      OPTIONS (
        resource '<имя_бакета>/test.csv',
        format 'csv'
      );
      
    5. Получите данные из внешней таблицы:

      SELECT * FROM fdw_s3;
      

Совет

Параметры подключения можно передавать как при создании источника данных, так и при создании внешней таблицы.

Передача параметров подключения при создании внешней таблицы
CREATE SERVER "<локальное_имя_источника>"
  FOREIGN DATA WRAPPER jdbc_pxf_fdw;

CREATE USER MAPPING FOR CURRENT_USER
  SERVER "<локальное_имя_источника>";

CREATE FOREIGN TABLE <имя_таблицы>
  (<имя_столбца> <тип_данных> [, ...])
  SERVER "<локальное_имя_источника>"
  OPTIONS (
    resource '<путь_к_данным_или_имя_таблицы>',
    jdbc_driver '<имя_класса_JDBC_драйвера>',
    db_url 'jdbc:<тип_СУБД>://<FQDN_кластера>:<порт>/<имя_БД>',
    user '<имя_пользователя>',
    pass '<пароль>'
  );

Создать external-таблицуСоздать external-таблицу

Синтаксис SQL-запроса на создание external-таблицы:

CREATE [WRITABLE] EXTERNAL TABLE <имя_таблицы>
       (<имя_столбца> <тип_данных> [, ...])
       LOCATION('pxf://<путь_к_данным_или_имя_таблицы>?PROFILE=<имя_профиля>&SERVER=<имя_источника>')
       FORMAT '[TEXT|CSV|CUSTOM]';

Где:

  • <имя_таблицы> — имя внешней таблицы, которая будет создана в кластере Yandex MPP Analytics for PostgreSQL.

  • <имя_столбца> — имя столбца.

  • <тип_данных> — тип данных столбца. Должен совпадать с типом данных столбца таблицы во внешней СУБД.

  • <путь_к_данным_или_имя_таблицы> — имя внешнего объекта, см. примеры внешних таблиц.

  • PROFILE — стандарт взаимодействия с внешней СУБД (профиль). Например, JDBC. Список возможных значений зависит от типа подключения:

    • S3;
    • JDBC;
    • HDFS и Hive.
  • SERVER — имя внешнего источника данных PXF.

    Вместо SERVER вы можете передать параметры, которые задают конфигурацию внешнего источника данных. Они зависят от типа подключения источника. Подробнее см. в документации Greenplum® PXF и примерах создания внешних таблиц.

Опция WRITABLE позволяет записывать данные во внешний объект. Чтобы считать данные из внешнего объекта, создайте внешнюю таблицу с опцией READABLE.

Примеры создания external-таблицПримеры создания external-таблиц

ClickHouse®
MySQL®
PostgreSQL
Object Storage
  1. Создайте кластер Yandex Managed Service for ClickHouse® с именем пользователя chuser.

  2. В подсети кластера настройте NAT-шлюз и создайте группу безопасности, разрешающую весь входящий и исходящий трафик со всех адресов.

  3. (Опционально) Создайте внешний источник данных JDBC с параметрами:

    • Имя — chserver;

    • Driver — com.clickhouse.jdbc.ClickHouseDriver;

    • Url — jdbc:clickhouse:http://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:8123/db1, где:

      • c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz — особый FQDN, который всегда указывает на доступный хост кластера Managed Service for ClickHouse®.
      • 8123 — порт для подключения к кластеру Managed Service for ClickHouse®.
      • db1 — имя БД в кластере Managed Service for ClickHouse®.
    • User — chuser.

    Идентификатор кластера можно получить со списком кластеров в каталоге.

    Если не создать источник данных, параметры подключения к источнику нужно передать в SQL-запросе на создание внешней таблицы.

  4. Подключитесь к БД ClickHouse® с помощью утилиты clickhouse-client.

  5. Создайте тестовую таблицу и наполните ее данными:

    CREATE TABLE test (id int) ENGINE = Memory;
    
    INSERT INTO test VALUES (1);
    
  6. Подключитесь к БД.

  7. Создайте внешнюю таблицу pxf_ch, которая будет ссылаться на таблицу test в кластере ClickHouse®. SQL-запрос зависит от того, был ли создан ранее внешний источник данных:

    • С источником данных:

      CREATE READABLE EXTERNAL TABLE pxf_ch(id int)
      LOCATION ('pxf://test?PROFILE=JDBC&SERVER=chserver')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
    • Без источника данных:

      CREATE READABLE EXTERNAL TABLE pxf_ch(id int)
      LOCATION ('pxf://test?PROFILE=JDBC&JDBC_DRIVER=com.clickhouse.jdbc.ClickHouseDriver&DB_URL=jdbc:clickhouse:http://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:8123/db1&USER=chuser')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      

    Если для хостов ClickHouse® включен публичный доступ, при создании внешней таблицы необходимо использовать шифрованное соединение. Для этого укажите в запросе параметры SSL:

    • С источником данных:

      CREATE READABLE EXTERNAL TABLE pxf_ch(id int)
      LOCATION ('pxf://test?PROFILE=JDBC&SERVER=chserver&ssl=true&sslmode=strict&sslrootcert=/etc/greenplum/ssl/allCAs.pem')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
    • Без источника данных:

      CREATE READABLE EXTERNAL TABLE pxf_ch(id int)
      LOCATION ('pxf://test?PROFILE=JDBC&JDBC_DRIVER=com.clickhouse.jdbc.ClickHouseDriver&DB_URL=jdbc:clickhouse:https://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:8443/db1&USER=chuser&ssl=true&sslmode=strict&sslrootcert=/etc/greenplum/ssl/allCAs.pem')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
  8. Получите данные из внешней таблицы:

    SELECT * FROM pxf_ch;
    

    Результат:

    test_pxf=> SELECT * FROM pxf_ch;
     id
    ----
      1
    (1 row)
    
  1. Создайте кластер Yandex Managed Service for MySQL® с настройками:

    • Имя пользователя — mysqluser.
    • В настройках хостов выберите опцию Публичный доступ.
  2. В подсети кластера настройте NAT-шлюз и создайте группу безопасности, разрешающую весь входящий и исходящий трафик со всех адресов.

  3. (Опционально) Создайте внешний источник данных JDBC с параметрами:

    • Имя — mysqlserver;

    • Driver — com.mysql.jdbc.Driver;

    • Url — jdbc:mysql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:3306/db1, где:

      • c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz — особый FQDN, который всегда указывает на текущий хост-мастер в кластере Managed Service for MySQL®.
      • 3306 — порт для подключения к кластеру Managed Service for MySQL®.
      • db1 — имя БД в кластере Managed Service for MySQL®.
    • User — mysqluser.

    Идентификатор кластера можно получить со списком кластеров в каталоге.

    Если не создать источник данных, параметры подключения к источнику нужно передать в SQL-запросе на создание внешней таблицы.

  4. Подключитесь к БД MySQL® с помощью утилиты mysql.

  5. Создайте тестовую таблицу и наполните ее данными:

    CREATE TABLE test (a INT, b INT);
    
    INSERT INTO test VALUES (1, 11), (2, 22);
    
  6. Подключитесь к БД.

  7. Создайте внешнюю таблицу pxf_mysql, которая будет ссылаться на таблицу test в кластере MySQL®. SQL-запрос зависит от того, был ли создан ранее внешний источник данных:

    • С источником данных:

      CREATE READABLE EXTERNAL TABLE pxf_mysql(a int, b int)
      LOCATION ('pxf://test?PROFILE=JDBC&SERVER=mysqlserver')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
    • Без источника данных:

      CREATE READABLE EXTERNAL TABLE pxf_mysql(a int, b int)
      LOCATION ('pxf://test?PROFILE=JDBC&JDBC_DRIVER=com.mysql.jdbc.Driver&DB_URL=jdbc:mysql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:3306/db1&USER=mysqluser')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
  8. Получите данные из внешней таблицы:

    SELECT * FROM pxf_mysql;
    

    Результат:

    test_pxf=> SELECT * FROM pxf_mysql;
    a | b
    --+----
    1 | 11
    2 | 22
    (2 rows)
    
  1. Создайте кластер Yandex Managed Service for PostgreSQL с настройками:

    • Имя пользователя — pguser;
    • В настройках хостов выберите опцию Публичный доступ.
  2. В подсети кластера настройте NAT-шлюз и создайте группу безопасности, разрешающую весь входящий и исходящий трафик со всех адресов.

  3. (Опционально) Создайте внешний источник данных JDBC с параметрами:

    • Имя — pgserver;

    • Driver — org.postgresql.Driver;

    • Url — jdbc:postgresql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:6432/db1, где:

      • c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz — особый FQDN, который всегда указывает на текущий хост-мастер в кластере Managed Service for PostgreSQL.
      • 6432 — порт для подключения к кластеру Managed Service for PostgreSQL.
      • db1 — имя БД в кластере Managed Service for PostgreSQL.
    • User — pguser.

    Идентификатор кластера можно получить со списком кластеров в каталоге.

    Если не создать источник данных, параметры подключения к источнику нужно передать в SQL-запросе на создание внешней таблицы.

  4. Подключитесь к БД PostgreSQL с помощью утилиты psql.

  5. Создайте тестовую таблицу и наполните ее данными:

    CREATE TABLE public.test ("a" INT,"b" INT);
    
    INSERT INTO public.test VALUES (1, 11), (2, 22);
    
  6. Подключитесь к БД.

  7. Создайте внешнюю таблицу pxf_pg, которая будет ссылаться на таблицу public.test в кластере PostgreSQL. SQL-запрос зависит от того, был ли создан ранее внешний источник данных:

    • С источником данных:

      CREATE READABLE EXTERNAL TABLE pxf_pg(a int, b int)
      LOCATION ('pxf://public.test?PROFILE=JDBC&SERVER=pgserver')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
    • Без источника данных:

      CREATE READABLE EXTERNAL TABLE pxf_pg(a int, b int)
      LOCATION ('pxf://public.test?PROFILE=JDBC&JDBC_DRIVER=org.postgresql.Driver&DB_URL=jdbc:postgresql://c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz:6432/db1&USER=pguser')
      FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
      
  8. Получите данные из внешней таблицы:

    SELECT * FROM pxf_pg;
    

    Результат:

    test_pxf=> SELECT * FROM pxf_pg;
    a | b
    --+----
    1 | 11
    2 | 22
    (2 rows)
    
  1. В подсети кластера настройте NAT-шлюз и создайте группу безопасности, разрешающую весь входящий и исходящий трафик со всех адресов.

  2. Создайте бакет Object Storage с ограниченным доступом.

  3. Создайте статический ключ доступа.

  4. (Опционально) Создайте внешний источник данных S3 с параметрами:

    • Имя — objserver;
    • Access Key — идентификатор статического ключа доступа, созданного ранее;
    • Secret Key — секретный ключ, созданный ранее вместе со статическим ключом доступа;
    • Endpoint — storage.yandexcloud.kz.

    Если не создать источник данных, параметры подключения к источнику нужно передать в SQL-запросе на создание внешней таблицы.

  5. На локальной машине создайте тестовый файл test.csv:

    1,111
    2,222
    
  6. Загрузите тестовый файл в бакет.

    Файлы, которые вы загружаете в бакет, не должны начинаться с символов . и _. Такие файлы считаются скрытыми, и PXF не считывает из них данные.

  7. Подключитесь к БД.

  8. Чтобы считать данные из бакета Object Storage:

    1. Создайте внешнюю таблицу pxf_s3_read, которая будет ссылаться на бакет. SQL-запрос зависит от того, был ли создан ранее внешний источник данных:

      • С источником данных:

        CREATE READABLE EXTERNAL TABLE pxf_s3_read(a int, b int)
        LOCATION ('pxf://<имя_бакета>/test.csv?PROFILE=s3:text&SERVER=objserver')
        FORMAT 'CSV';
        
      • Без источника данных:

        CREATE READABLE EXTERNAL TABLE pxf_s3_read(a int, b int)
        LOCATION ('pxf://<имя_бакета>/test.csv?PROFILE=s3:text&accesskey=<идентификатор_ключа>&secretkey=<секретный_ключ>&endpoint=storage.yandexcloud.kz')
        FORMAT 'CSV';
        
    2. Получите данные из внешней таблицы:

      SELECT * FROM pxf_s3_read;
      

      Результат:

      test_pxf=> SELECT * FROM pxf_s3_read;
      a | b
      ---+----
      1 | 111
      2 | 222
      (2 rows)
      
  9. Чтобы записать данные в бакет Object Storage:

    1. Создайте внешнюю таблицу pxf_s3_write с опцией WRITABLE. Имя файла при создании таблицы указывать не нужно:

      • С источником данных:

        CREATE WRITABLE EXTERNAL TABLE pxf_s3_write(a int, b int)
        LOCATION ('pxf://<имя_бакета>/?PROFILE=s3:text&SERVER=objserver')
        FORMAT 'CSV';
        
      • Без источника данных:

        CREATE WRITABLE EXTERNAL TABLE pxf_s3_write(a int, b int)
        LOCATION ('pxf://<имя_бакета>/?PROFILE=s3:text&accesskey=<идентификатор_ключа>&secretkey=<секретный_ключ>&endpoint=storage.yandexcloud.kz')
        FORMAT 'CSV';
        
    2. Добавьте данные в таблицу:

      INSERT INTO pxf_s3_write VALUES (3,333);
      
      INSERT 0 1
      
    3. Убедитесь, что в бакете создан новый объект.

Примечание

Для создания внешней таблицы из Object Storage можно использовать протокол S3, передавая параметры статического ключа в файле, расположенном на веб-сервере. Подробнее см. в руководстве.

Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.

Была ли статья полезна?

Предыдущая
Hive
Следующая
Изменение настроек PXF
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»