---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/ru/postgresql/connect.md?version=v25.3
  - href: ru/postgresql/connect.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/postgresql/connect.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Выполнение запросов

<!-- source: ru/postgresql/_includes/alert_preview.md -->
{% note warning %}

Поддержка синтаксиса PostgreSQL в YDB **находится в разработке**. Использовать её в production окружениях **не рекомендуется**. Запросы в PostgreSQL могут исполняться до нескольких раз медленнее по сравнению с аналогичными запросами на YQL.

Основной сценарий, который можно тестировать — выполнение аналитических запросов к хранимым в YDB данным.

{% endnote %}
<!-- endsource: ru/postgresql/_includes/alert_preview.md -->

Существует несколько способов запуска запросов на диалекте PostgreSQL:

1. Использование нативных PostgreSQL-инструментов. YDB обладает сервисом совместимости для поддержки нативного сетевого протокола PostgreSQL - [pgwire](https://www.postgresql.org/docs/current/protocol.html), поэтому к YDB можно подключаться стандартными клиентами PostgreSQL.
1. Использование нативных YDB инструментов и явного указания, что запрос выполняется в синтаксисе PostgreSQL с помощью параметров (настроек) этих инструментов при выполнении запросов.
1. Использование любых инструментов, взаимодействующих с YDB и явного указания, что запрос выполняется в синтаксисе PostgreSQL с помощью специального комментария в начале тела запроса `--!syntax_pg`.

## Нативный сетевой протокол PostgreSQL {#pgwire}

Для подключения к YDB через PostgreSQL-протокол можно использовать любые клиентские библиотеки и приложения, поддерживающие этот протокол. Ниже приведен пример подключения с помощью утилиты `psql`, входящей в комплект поставки PostgreSQL.

Для подключения необходимо выполнить предварительные шаги:

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

Выполнить запрос в YDB:

```bash
psql -h <ydb_address> -U <user_name> <database_name>
```

Где:

- `<ydb_address>` - адрес кластера YDB, к которому выполняется подключение.
- `<database_name>` - название базы данных в кластере. Может быть сложным именем, например, `mycluster/tenant1/database`.
- `<user_name>` - логин пользователя.

## Использование стандартных инструментов YDB {#syntaxpg}

Выполнять запросы на PostgreSQL-диалекте можно с помощью любых инструментов YDB, явно указав в начале тела запроса признак диалекта с помощью специального комментария: `--!syntax_pg`.

Для подключения необходимо выполнить предварительные шаги:

1. Получить адрес [кластера](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.3#cluster), к которому производится подключение.
1. Получить название [базы данных](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.3#database) в кластере, к которому производится подключение.

Выполнить запрос к YDB:

```bash
ydb -e <ydb_address> -d <database_name> --user <user_name> sql -s '--!syntax_pg
SELECT 1;
'
```

Где:

- `<ydb_address>` — адрес кластера YDB, к которому выполняется подключение.
- `<database_name>` — название базы данных в кластере. Может быть сложным именем, например, `mycluster/tenant1/database/`.
- `<user_name>` — логин пользователя.
