Выполнение скрипта (с поддержкой стриминга)
С помощью подкоманды yql
вы можете выполнить YQL-скрипт. Скрипт может содержать запросы разных типов. В отличие от scripting yql
, подкоманда yql
устанавливает стрим и получает данные через него. Выполнение запроса в стриме позволяет снять ограничение на размер читаемых данных.
Общий вид команды:
ydb [global options...] yql [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотрите описание команды выполнения YQL-скрипта:
ydb yql --help
Параметры подкоманды
Имя |
Описание |
|
Время, в течение которого должна быть выполнена операция на сервере. |
|
Режим сбора статистики.
|
|
Текст YQL-скрипта для выполнения. |
|
Путь к файлу с текстом YQL-скрипта для выполнения. |
|
Формат вывода.
|
Работа с параметризованными запросами
Ниже приведена краткая справка, расширенное описание с примерами смотрите в статье Выполнение параметризованных YQL-запросов и скриптов.
Имя | Описание |
---|---|
-p, --param |
Значение одного параметра YQL-запроса в формате $name=value , где $name — имя параметра, а value — его значение (корректный JSON value). |
--param-file |
Имя файла в формате JSON в кодировке UTF-8, в котором заданы значения параметров, сопоставляемые с параметрами YQL-запроса по именам ключей. |
--input-format |
Формат представления значений параметров. Действует на все способы их передачи (через параметр команды, файл или stdin ).Возможные значения: |
--stdin-format |
Формат представления параметров и фрейминг для stdin . Чтобы задать оба значения, укажите параметр дважды.Формат представления параметров на stdin Возможные значения:
stdin не задан, то применяется формат, заданный параметром --input-format .Разделение наборов параметров (фрейминг) для stdin Возможные значения:
|
--columns |
Строка с именами колонок, заменяющими header CSV/TSV документа, читаемого со stdin'а. Имена колонок должны быть в том же формате, что и сам документ. |
--skip-rows |
Число строк с начала данных, читаемых со stdin'a, которые нужно пропустить, не включая строку header'a. |
--stdin-par |
Имя параметра, значение которого будет передано через stdin , указывается без символа $ . |
--batch |
Режим пакетирования значений наборов параметров, получаемых через stdin .Возможные значения:
|
--batch-limit |
Максимальное количество наборов параметров в пакете для адаптивного режима пакетирования. Установка в 0 снимает ограничение.Значение по умолчанию — 1000 . |
--batch-max-delay |
Максимальная задержка отправки на обработку полученного набора параметров для адаптивного режима пакетирования. Задается в виде числа с размерностью времени - s , ms , m .Значение по умолчанию — 1s (1 секунда). |
Примеры
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Скрипт создания строковой таблицы, заполнения её данными, и получения выборки из этой таблицы:
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;
'
Вывод команды:
┌──────────────┬───────────┬─────────────┬──────────┐
| release_date | series_id | series_info | title |
├──────────────┼───────────┼─────────────┼──────────┤
| "2023-04-20" | 1 | "Info1" | "Title1" |
└──────────────┴───────────┴─────────────┴──────────┘
Выполнение скрипта из примера выше, записанного в файле script1.yql
, с выводом результатов в формате JSON
:
ydb -p quickstart yql -f script1.yql --format json-unicode
Вывод команды:
{"release_date":"2023-04-20","series_id":1,"series_info":"Info1","title":"Title1"}
Примеры передачи параметров в скрипты приведены в статье о передаче параметров в команды исполнения YQL.