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

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}};"