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

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

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

ydb [global options...] yql [options...]

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

ydb yql --help

Параметры подкоманды

Имя Описание
--timeout Время, в течение которого должна быть выполнена операция на сервере.
--stats Режим сбора статистики.
Возможные значения:
  • none — не собирать;
  • basic — собирать по основным событиям;
  • full — собирать по всем событиям.
Значение по умолчанию — none.
-s, --script Текст YQL-скрипта для выполнения.
-f, --file Путь к файлу с текстом YQL-скрипта для выполнения.
-p, --param Параметры запроса (для запросов над данными и скан-запросов).
Может быть указано несколько параметров. Для изменения формата ввода используйте параметр --input-format.
--input-format Формат ввода.
Возможные значения:
  • json-unicode — ввод в формате JSON, бинарные строки закодированы в Юникод;
  • json-base64 — ввод в формате JSON, бинарные строки закодированы в Base64.
--format Формат вывода.
Значение по умолчанию — pretty.
Возможные значения:
  • pretty — человекочитаемый формат;
  • json-unicode — вывод в формате JSON, бинарные строки закодированы в Юникод, каждая строка JSON выводится в отдельной строке;
  • json-unicode-array — вывод в формате JSON, бинарные строки закодированы в Юникод, результат выводится в виде массива строк JSON, каждая строка JSON выводится в отдельной строке;
  • json-base64 — вывод в формате JSON, бинарные строки закодированы в Base64, каждая строка JSON выводится в отдельной строке;
  • json-base64-array — вывод в формате JSON, бинарные строки закодированы в Base64, результат выводится в виде массива строк JSON, каждая строка JSON выводится в отдельной строке.

Примеры

Примечание

В примерах используется профиль db1, подробнее смотрите в Создание профиля соединения.

Выполнение запроса с таймаутом

Выполните запрос с таймаутом 500 мс:

ydb yql \
  --script \
  "CREATE TABLE series ( \
  series_id Uint64, \
  title Utf8, \
  series_info Utf8, \
  release_date Uint64, \
  PRIMARY KEY (series_id) \
  );" \
  --timeout 500 

Если сервер не успеет выполнить запрос за 500 мс, он ответит ошибкой. Если по какой либо причине клиент не сможет получить сообщение сервера об ошибке, то операция будет прервана через 500+200 мс на стороне клиента.

Выполнение параметризированного запроса

Выполните параметризированный запрос со сбором статистики:

ydb yql \
  --stats full \
  --script \
  "DECLARE \$myparam AS Uint64; \
  SELECT * FROM series WHERE series_id=\$myparam;" \
  --param '$myparam=1'

Результат:

┌──────────────┬───────────┬──────────────────────────────────────────────────────────────────────────────┬────────────┐
| release_date | series_id | series_info                                                                  | title      |
├──────────────┼───────────┼──────────────────────────────────────────────────────────────────────────────┼────────────┤
| 13182        | 1         | "The IT Crowd is a British sitcom produced by Channel 4, written by Graham L | "IT Crowd" |
|              |           | inehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Ka |            |
|              |           | therine Parkinson, and Matt Berry."                                          |            |
└──────────────┴───────────┴──────────────────────────────────────────────────────────────────────────────┴────────────┘

Statistics:
query_phases {
  duration_us: 14294
  table_access {
    name: "/my-db/series"
    reads {
      rows: 1
      bytes: 209
    }
    partitions_count: 1
  }
  cpu_time_us: 783
  affected_shards: 1
}
process_cpu_time_us: 5083
total_duration_us: 81373
total_cpu_time_us: 5866