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


# Выполнение скрипта (с поддержкой стриминга)

<!-- source: ru/reference/ydb-cli/_includes/deprecated_command_warning.md -->
{% note warning %}

Данная команда устарела.
Рекомендуемый инструмент для выполнения запросов в YDB CLI — это команда [ydb sql](https://ydb.tech/docs/ru/reference/ydb-cli/sql.md?version=v25.4).

{% endnote %}
<!-- endsource: ru/reference/ydb-cli/_includes/deprecated_command_warning.md -->

С помощью подкоманды `yql` вы можете выполнить YQL-скрипт. Скрипт может содержать запросы разных типов. В отличие от `scripting yql`, подкоманда `yql` устанавливает стрим и получает данные через него. Выполнение запроса в стриме позволяет снять ограничение на размер читаемых данных.

Общий вид команды:

```bash
ydb [global options...] yql [options...]
```

* `global options` — [глобальные параметры](https://ydb.tech/docs/ru/reference/ydb-cli/commands/global-options.md?version=v25.4).
* `options` — [параметры подкоманды](#options).

Посмотрите описание команды выполнения YQL-скрипта:

```bash
ydb yql --help
```

## Параметры подкоманды {#options}

#|
|| Имя | Описание ||
|| `--timeout` | Время, в течение которого должна быть выполнена операция на сервере. ||
|| `--stats` | Режим сбора статистики.
Возможные значения:

* `none` (по умолчанию) — не собирать;
* `basic` — собирать по основным событиям;
* `full` — собирать по всем событиям.

||
|| `-s`, `--script` | Текст YQL-скрипта для выполнения. ||
|| `-f`, `--file` | Путь к файлу с текстом YQL-скрипта для выполнения. ||
|| `--format` | Формат вывода.
Возможные значения:

<!-- source: ru/reference/ydb-cli/_includes/result_format_common.md -->
* `pretty` (по умолчанию) — человекочитаемый формат;
* `json-unicode` — вывод в формате [JSON](https://ru.wikipedia.org/wiki/JSON), бинарные строки закодированы в [юникод](https://ru.wikipedia.org/wiki/Юникод), каждая строка JSON выводится в отдельной строке;
* `json-unicode-array` — вывод в формате JSON, бинарные строки закодированы в Юникод, результат выводится в виде массива строк JSON, каждая строка JSON выводится в отдельной строке;
* `json-base64` — вывод в формате JSON, бинарные строки закодированы в [Base64](https://ru.wikipedia.org/wiki/Base64), каждая строка JSON выводится в отдельной строке;
* `json-base64-array` — вывод в формате JSON, бинарные строки закодированы в Base64, результат выводится в виде массива строк JSON, каждая строка JSON выводится в отдельной строке;
* `parquet`: вывод в формате [Apache Parquet](https://parquet.apache.org/docs/).
<!-- endsource: ru/reference/ydb-cli/_includes/result_format_common.md -->

<!-- source: ru/reference/ydb-cli/_includes/result_format_csv_tsv.md -->
* `csv` — вывод в формате [CSV](https://ru.wikipedia.org/wiki/CSV);
* `tsv` — вывод в формате [TSV](https://ru.wikipedia.org/wiki/TSV).
<!-- endsource: ru/reference/ydb-cli/_includes/result_format_csv_tsv.md -->

||
|#

### Работа с параметризованными запросами {#parameterized-query}

<!-- source: ru/_includes/parameterized-query.md -->
Ниже приведена краткая справка, расширенное описание с примерами смотрите в статье [Выполнение параметризованных YQL-запросов и скриптов](https://ydb.tech/docs/ru/reference/ydb-cli/parameterized-queries-cli.md?version=v25.4).

Имя | Описание
---|---
`-p, --param` | Значение одного параметра YQL-запроса в формате `$name=value`, где `$name` — имя параметра, а `value` — его значение (корректный [JSON value](https://www.json.org/json-ru.html)).
`--param-file` | Имя файла в формате [JSON](https://ru.wikipedia.org/wiki/JSON) в кодировке [UTF-8](https://ru.wikipedia.org/wiki/UTF-8), в котором заданы значения параметров, сопоставляемые с параметрами YQL-запроса по именам ключей.
`--input-format` | Формат представления значений параметров. Действует на все способы их передачи (через параметр команды, файл или `stdin`).<br/>Возможные значения:<ul><li>`json-unicode` (по умолчанию) — [JSON](https://ru.wikipedia.org/wiki/JSON).</li><li>`json-base64` — [JSON](https://ru.wikipedia.org/wiki/JSON), в котором значения параметров с типом «бинарная строка» (`DECLARE $par AS String`) представлены в кодировке [Base64](https://ru.wikipedia.org/wiki/Base64).</li></ul>
`--stdin-format` | Формат представления параметров и фрейминг для `stdin`. Чтобы задать оба значения, укажите параметр дважды.<br/>**Формат представления параметров на `stdin`**<br/>Возможные значения:<ul><li>`json-unicode` — [JSON](https://ru.wikipedia.org/wiki/JSON).</li><li>`json-base64` — [JSON](https://ru.wikipedia.org/wiki/JSON), в котором значения параметров с типом «бинарная строка» (`DECLARE $par AS String`) представлены в кодировке [Base64](https://ru.wikipedia.org/wiki/Base64).</li><li>`raw` — бинарные данные, имя параметра задается опцией `--stdin-par`.</li><li>`csv` — формат [CSV](https://ru.wikipedia.org/wiki/CSV).</li><li>`tsv` — формат [TSV](https://ru.wikipedia.org/wiki/TSV).</li></ul>Если формат представления параметров на `stdin` не задан, то применяется формат, заданный параметром `--input-format`.<br/><br/>**Разделение наборов параметров (фрейминг) для `stdin`**<br/>Возможные значения:<ul><li>`no-framing` (по умолчанию) — фрейминг не применяется</li><li>`newline-delimited` — символ перевода строки отмечает на `stdin` окончание одного набора параметров, отделяя его от следующего.</li></ul>
`--columns` | Строка с именами колонок, заменяющими header CSV/TSV документа, читаемого со stdin'а. Имена колонок должны быть в том же формате, что и сам документ.
`--skip-rows` | Число строк с начала данных, читаемых со stdin'a, которые нужно пропустить, не включая строку header'a.
`--stdin-par` | Имя параметра, значение которого будет передано через `stdin`, указывается без символа `$`.
`--batch` | Режим пакетирования значений наборов параметров, получаемых через `stdin`.<br/>Возможные значения:<ul><li>`iterative` (по умолчанию) — пакетирование выключено</li><li>`full` - полный пакет</li><li>`adaptive` - адаптивное пакетирование
`--batch-limit` | Максимальное количество наборов параметров в пакете для адаптивного режима пакетирования. Установка в `0` снимает ограничение.<br/><br/>Значение по умолчанию — `1000`.<br/><br/>
`--batch-max-delay` | Максимальная задержка отправки на обработку полученного набора параметров для адаптивного режима пакетирования. Задается в виде числа с размерностью времени - `s`, `ms`, `m`.<br/><br/>Значение по умолчанию — `1s` (1 секунда).<br/><br/>
<!-- endsource: ru/_includes/parameterized-query.md -->

## Примеры {#examples}

<!-- source: ru/_includes/ydb-cli-profile.md -->
{% note info %}

В примерах используется профиль `quickstart`, подробнее смотрите в [Создание профиля для соединения с тестовой БД](https://ydb.tech/docs/ru/reference/ydb-cli/profile/create.md?version=v25.4#quickstart).

{% endnote %}
<!-- endsource: ru/_includes/ydb-cli-profile.md -->

Скрипт создания строковой таблицы, заполнения её данными, и получения выборки из этой таблицы:

```bash
ydb -p quickstart yql -s '
    CREATE TABLE series (series_id Uint64, title Utf8, series_info Utf8, release_date Date, PRIMARY KEY (series_id));
    COMMIT;
    UPSERT INTO series (series_id, title, series_info, release_date) values (1, "Title1", "Info1", Cast("2023-04-20" as Date));
    COMMIT;
    SELECT * from series;
  '
```

Вывод команды:

```text
┌──────────────┬───────────┬─────────────┬──────────┐
| release_date | series_id | series_info | title    |
├──────────────┼───────────┼─────────────┼──────────┤
| "2023-04-20" | 1         | "Info1"     | "Title1" |
└──────────────┴───────────┴─────────────┴──────────┘
```

Выполнение скрипта из примера выше, записанного в файле `script1.yql`, с выводом результатов в формате `JSON`:

```bash
ydb -p quickstart yql -f script1.yql --format json-unicode
```

Вывод команды:

```text
{"release_date":"2023-04-20","series_id":1,"series_info":"Info1","title":"Title1"}
```

Примеры передачи параметров в скрипты приведены в [статье о передаче параметров в команды исполнения YQL](https://ydb.tech/docs/ru/reference/ydb-cli/parameterized-queries-cli.md?version=v25.4).

