Перейти к основному содержимому
Версия: 6.1

db

Описание​

Выполняет запрос к базе данных.

Синтаксис​

db connection=<field> query=[<string> | <field>] [<timeout>]

Обязательные аргументы​

ПараметрСинтаксисОписание
connectionconnection=<field>Название соединения.
queryquery=[<string> | <field>]SQL-запрос.
к сведению

Если выполняется запрос на получение данных, то текущие данные заменяются новыми. Если выполняется запрос на обработку данных, в результате остаются текущие данные.

Временные метки

В запрос к базе данных можно внедрить метки временного поля {{_earliest}} или {{_latest}}. Эти метки заменятся на значения earliest или latest из команды source.


Опциональные аргументы​

ПараметрСинтаксисПо умолчаниюОписание
timeout<int>Берется из db_query или кластерной настройки "sme.sa.timeout.db".Таймаут выполнения запроса в миллисекундах. При запросе преобразуется в секунды с округлением вверх.
Поддержка timeout

Таймаут сработает только в том случае, если СУБД и используемый JDBC драйвер поддерживают setQueryTimeout.


Примеры запросов​

Пример 1​

Получение данных из БД, которая определена в конфигурации с названием mysql:

db connection=mysql query="SELECT * FROM user_info.user;"

Пример 2​

Изменение данных в БД, которая определена в конфигурации с названием mysql. В результате останутся данные выполнения команды source:

db connection=mysql query="INSERT INTO user_info.user (name, email) VALUES ('Ivan', 'ivan@mail.ru');"

Пример 3​

Выполнение команды с сохраненным запросом. Выполнится запрос, который сохранен под названием mysql_query:

db connection=mysql query=mysql_query

Пример 4​

Пример запроса к базе данных с временными метками. В SQL-запрос подставляется временная метка {{_earliest}}, полученная из временных параметров поиска. Это обеспечивает согласование временного диапазона выборки в БД с временным диапазоном основного запроса.

db connection=mysql query="SELECT * FROM user_info.user WHERE date_field >= {{_earliest}};"