Интерактивный режим выполнения запросов

Общее описание

После выполнения команды ydb без подкоманд запускается интерактивный режим выполнения запросов. После этого можно вводить запросы напрямую в консоль или терминал. При вводе символа перевода строки запрос считается законченным, и он начинает исполняться. Текст запроса может представлять из себя как YQL запрос, так и специальную команду.

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

ydb [global options...]

Примечание

Обратите внимание, что для работы команды должны быть заданы параметры подключения. Это может быть профиль по умолчанию, явно указанный профиль и/или набор параметров подключения.

Пример использования:

Пример

Интерактивный режим выполнения запросов в YDB CLI предоставляет следующие возможности:

Подсветка синтаксиса

Подсветка синтаксиса

Интерактивный режим поддерживает цветовую подсветку синтаксиса YQL, которая помогает лучше воспринимать структуру запросов. Разными цветами выделяются следующие группы элементов:

  • Ключевые слова YQL (SELECT, FROM, WHERE, INSERT, UPDATE и другие)
  • Имена таблиц и столбцов
  • Строковые литералы (текст в кавычках)
  • Числовые литералы
  • Операторы (=, <, >, +, - и другие)
  • Специальные символы (скобки, запятые, точки)
  • Комментарии

Горячие клавиши

Вы можете использовать эти горячие клавиши при работе в интерактивном режиме:

Горячая клавиша Описание
Up arrow Показывает предыдущий запрос из истории.
Down arrow Показывает следующий запрос из истории.
TAB Дополняет текущее слово на основе синтаксиса YQL.
CTRL + R Поиск запроса в истории по введенной подстроке.
CTRL + D Выход из интерактивного режима.

История запросов

Клавиши со стрелками вверх и вниз позволяют перемещаться по истории запросов:

История

История сохраняется локально и доступна между запусками CLI.

Также поддерживается функция поиска по запросам (CTRL + R):

Поиск

Автодополнение

Автодополнение помогает эффективнее писать запросы. Во время ввода предлагаются возможные варианты завершения текущего слова на основе синтаксиса YQL.

Также выполняется поиск имен объектов схемы в базе данных, где это возможно.

Существует два типа подсказок: автодополнение по нажатию клавиши TAB и интерактивные подсказки.

Автодополнение по нажатию клавиши TAB

В интерактивном режиме при нажатии клавиши TAB отображается список вариантов завершения текущего слова в соответствии с синтаксисом YQL.

Автодополнение

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

Если доступен только один вариант, нажатие TAB автоматически дополнит текущее слово до него.

Если у всех доступных вариантов общий префикс, нажатие TAB автоматически его подставит.

Интерактивные подсказки

В процессе ввода в интерактивном режиме под курсором появляется список подсказок, показывающий первые 4 варианта завершения текущего слова согласно грамматике YQL.

Интерактивные подсказки

Эта функция предоставляет быстрые подсказки без перегрузки всеми возможными вариантами, помогая придерживаться правильного синтаксиса при написании запросов.

Специальные команды

Специальные команды специфичны для CLI и не являются частью синтаксиса YQL. Они предназначены для выполнения различных функций, которые нельзя выполнить через YQL запрос.

Команда Описание
SET param = value Устанавливает значение внутренней переменной param в value.
EXPLAIN query-text Выводит план запроса query-text. Эквивалентна команде ydb sql --explain.
EXPLAIN AST query-text Выводит план запроса query-text вместе с AST. Эквивалентна команде ydb sql --explain-ast.

Список внутренних переменных

Внутренние переменные устанавливают поведение команд и задаются с помощью специальной команды SET.

Переменная Описание
stats Режим сбора статистики для последующих запросов.
Возможные значения:
  • none (по умолчанию) — не собирать;
  • basic — собирать статистику;
  • full — собирать статистику и план запроса.

Пример

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

$ ydb
ydb> SET stats = full
ydb> select * from table1 limit 1
┌────┬─────┬───────┐
│ id │ key │ value │
├────┼─────┼───────┤
│ 10 │ 0   │ ""    │
└────┴─────┴───────┘

Statistics:
query_phases {
  duration_us: 14987
  table_access {
    name: "/ru-central1/a1v7bqj3vtf10qjleyow/laebarufb61tguph3g22/table1"
    reads {
      rows: 9937
      bytes: 248426
    }
  }
  cpu_time_us: 2925
  affected_shards: 1
}
process_cpu_time_us: 3816
total_duration_us: 79530
total_cpu_time_us: 6741


Full statistics:
Query 0:
ResultSet
└──Limit (Limit: 1)
   TotalCpuTimeUs: 175
   TotalTasks: 1
   TotalInputBytes: 6
   TotalInputRows: 1
   TotalOutputBytes: 16
   TotalDurationMs: 0
   TotalOutputRows: 1
   └──<UnionAll>
      └──Limit (Limit: 1)
      └──TableFullScan (ReadColumns: ["id","key","value"], ReadRanges: ["key (-∞, +∞)"], Table: impex_table)
         Tables: ["table1"]
         TotalCpuTimeUs: 154
         TotalTasks: 1
         TotalInputBytes: 0
         TotalInputRows: 0
         TotalOutputBytes: 16
         TotalDurationMs: 0
         TotalOutputRows: 1