Выполнить запрос
Выполняет запрос с указанными параметрами
- Параметры
- Расширенный вызов ?
Функция ВыполнитьЗапрос(Знач Соединение, Знач Запрос, Знач Сессия = Неопределено) Экспорт
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|---|---|---|---|---|
| Соединение | --conn | Произвольный | ✔ | Настройки или объект соединения (для gRPC) |
| Запрос | --req | Структура Из КлючИЗначение | ✔ | Данные запроса. См. ПолучитьНастройкиЗапроса |
| Сессия | --session | Структура Из КлючИЗначение | ✖ | Настройки сессии. См. ПолучитьНастройкиСессии |
Возвращаемое значение
Соответствие Из КлючИЗначение - Результат выполнения
| Параметр | Описание |
|---|---|
| proxy | ИнтернетПрокси или структура полей Протокол, Сервер, Порт, Пользователь, Пароль, ИспользоватьАутентификациюОС |
| timeout | Таймаут выполнения запроса |
| adv_response | Оформляет ответ в виде полной структуры HTTP-ответа с полями code, body и headers |
| retries | Число попыток отправки HTTP-запроса при коде 5** или внутренних ошибках клиента |
| dontwait | Создает фоновое задание и возвращает его данные (только для 1С и OneScript) |
Пример использования для 1С:Предприятие/OneScript
// Настройки соединения
URL = "http://localhost:8123";
Логин = "bayselonarrend";
Пароль = "12we...";
Авторизация = Новый Структура(Логин, Пароль);
Соединение = OPI_ClickHouse.ПолучитьНастройкиСоединенияHTTP(URL, Авторизация);
// Запрос (создание таблицы)
ТекстЗапроса = "CREATE TABLE IF NOT EXISTS events (
| id UInt64,
| timestamp DateTime,
| user_id UInt32,
| event_type String,
| payload String
|) ENGINE = MergeTree()
|ORDER BY (timestamp, id)";
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса);
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
// Запрос (вставка данных)
ТекстЗапроса = "INSERT INTO events FORMAT JSON";
ФорматДанных = "JSON";
МассивДанных = Новый Массив;
ТекущаяДата = Дата("20260101100000");
Запись1 = Новый Структура;
Запись1.Вставить("id" , 1);
Запись1.Вставить("timestamp" , ТекущаяДата);
Запись1.Вставить("user_id" , 100);
Запись1.Вставить("event_type", "click");
Запись1.Вставить("payload" , "{}");
Запись2 = Новый Структура;
Запись2.Вставить("id" , 2);
Запись2.Вставить("timestamp" , ТекущаяДата);
Запись2.Вставить("user_id" , 200);
Запись2.Вставить("event_type", "hover");
Запись2.Вставить("payload" , "{}");
МассивДанных.Добавить(Запись1);
МассивДанных.Добавить(Запись2);
Мета = Новый Массив;
Мета.Добавить(Новый Структура("name,type", "id" , "UInt64"));
Мета.Добавить(Новый Структура("name,type", "timestamp" , "DateTime"));
Мета.Добавить(Новый Структура("name,type", "user_id" , "UInt32"));
Мета.Добавить(Новый Структура("name,type", "event_type", "String"));
Мета.Добавить(Новый Структура("name,type", "payload" , "String"));
Данные = Новый Структура("meta,data", Мета, МассивДанных);
БазаДанных = "default";
IDЗапроса = Строка(Новый УникальныйИдентификатор());
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, БазаДанных, IDЗапроса, Данные, ФорматДанных);
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
// Запрос с внешней таблицей
ИмяТаблицы = "ext_users";
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("id" , "UInt64");
СтруктураКолонок.Вставить("name", "String");
Таб = Символы.Таб;
ДанныеТаблицы = "1" + Таб + "John
|2" + Таб + "Jane
|3" + Таб + "Bob";
ВнешняяТаблица = OPI_ClickHouse.ПолучитьСтруктуруВнешнейТаблицы(Имя Таблицы, СтруктураКолонок, ДанныеТаблицы, "TSV");
МассивВнешнихТаблиц = Новый Массив;
МассивВнешнихТаблиц.Добавить(ВнешняяТаблица);
ТекстЗапроса = "SELECT * FROM ext_users WHERE id > 1";
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстЗапроса, , , , "JSON", МассивВнешнихТаблиц);
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
// Выборка
ТекстВыборки = "SELECT * FROM events";
Запрос = OPI_ClickHouse.ПолучитьНастройкиЗапроса(ТекстВыборки, , , , "JSON");
Результат = OPI_ClickHouse.ВыполнитьЗапрос(Соединение, Запрос);
- Bash
- CMD/Bat
# JSON данные также могут быть переданы как путь к файлу .json
oint clickhouse ВыполнитьЗапрос \
--conn "{'address':'http://127.0.0.1:9101','transport':'grpc','auth_type':'basic','password':'***','user':'bayselonarrend'}" \
--req "{'query':'SELECT * FROM events_stream_test ORDER BY id','format':'JSON'}"
:: JSON данные также могут быть переданы как путь к файлу .json
oint clickhouse ВыполнитьЗапрос ^
--conn "{'address':'http://127.0.0.1:9101','transport':'grpc','auth_type':'basic','password':'***','user':'bayselonarrend'}" ^
--req "{'query':'SELECT * FROM events_stream_test ORDER BY id','format':'JSON'}"
Результат
{
"status": 200,
"result": true,
"body": {
"meta": [
{
"name": "id",
"type": "UInt64"
},
{
"name": "value",
"type": "String"
}
],
"data": [
{
"id": "1",
"value": "test1"
},
{
"id": "2",
"value": "test2"
}
],
"rows": 2,
"statistics": {
"elapsed": 0.000824358,
"rows_read": 2,
"bytes_read": 44
}
},
"headers": {
"Date": "Tue, 26 May 2026 18:26:51 GMT",
"Connection": "Keep-Alive",
"X-ClickHouse-Server-Display-Name": "clickhouse",
"Transfer-Encoding": "chunked",
"X-ClickHouse-Query-Id": "afece835-6598-4dda-9638-3ef1e05f1f90",
"X-ClickHouse-Format": "JSON",
"X-ClickHouse-Timezone": "Europe/Moscow",
"Keep-Alive": "timeout=3",
"X-ClickHouse-Summary": "{\"read_rows\":\"2\",\"read_bytes\":\"44\",\"written_rows\":\"0\",\"written_bytes\":\"0\",\"total_rows_to_read\":\"0\",\"...",
"Content-Type": "application/json; charset=UTF-8"
}
}