Выполнение запросов
С помощью подкоманды ydb sql
вы можете выполнить SQL-запрос. Запрос может быть любого типа (DDL, DML и т.д.), а так же состоять из нескольких подзапросов. Подкоманда ydb sql
устанавливает стрим и получает данные через него. Выполнение запроса в стриме позволяет снять ограничение на размер читаемых данных. Эта команда также позволяет записывать данные в YDB, что более эффективно при выполнении повторяющихся запросов с передачей данных через параметры.
Общий вид команды:
ydb [global options...] sql [options...]
global options
— глобальные параметры.options
— параметры подкоманды.
Посмотрите описание команды выполнения запроса:
ydb sql --help
Параметры подкоманды
Имя |
Описание |
|
Выводит общую справку по использованию команды. |
|
Выводит полную справку по использованию команды. Вывод содержит некоторые специфичный команды, которых нет в выводе |
|
Текст скрипта(запроса) для выполнения. |
|
Путь к файлу, содержащему текст запроса для выполнения. Путь |
|
Режим сбора статистики.
|
|
Выполнить explain-запрос, будет выведен логический план запроса. Сам запрос не будет выполнен, поэтому не затронет данные в базе. |
|
То же, что и |
|
Выполнить запрос в режиме |
|
Формат вывода.
|
Работа с параметризованными запросами
Подробное описание работы с параметрами с примерами смотрите в статье Выполнение параметризованных запросов.
Примеры
Примечание
В примерах используется профиль quickstart
, подробнее смотрите в Создание профиля для соединения с тестовой БД.
Запрос создания строковой таблицы, заполнения её данными, и получения выборки из этой таблицы:
ydb -p quickstart sql -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 sql -f script1.yql --format json-unicode
Вывод команды:
{"release_date":"2023-04-20","series_id":1,"series_info":"Info1","title":"Title1"}
Примеры передачи параметров в скрипты приведены в статье о передаче параметров в команды исполнения запросов.