Skip to content

SQL Runner

Описание

runner-sql — раннер для выполнения SQL-запросов к различным базам данных через платформу Unishift. Поддерживает PostgreSQL, MySQL, ClickHouse, SQLite и SQL Server.

Возможности

  • Поддержка множества СУБС
  • Автоматическое определение типа БД по DSN
  • Выполнение SELECT-запросов с выгрузкой результатов в CSV
  • Выполнение INSERT, UPDATE, DELETE и других команд
  • Подстановка параметров через именованные аргументы
  • Маскирование паролей в логах

Поддерживаемые базы данных

База данныхПрефикс DSN
PostgreSQLpostgres://, postgresql://
MySQLmysql://
ClickHouseclickhouse://
SQLitesqlite://, sqlite3://, *.db, *.sqlite
SQL Serversqlserver://, mssql://

Конфигурация

Общие параметры runner-common

См. Общая документация.

SQL-specific параметры

ПараметрОписаниеОбязательный
-dsn / DSN / dsnData Source Name для подключения к БДДа

Форматы DSN

PostgreSQL

postgres://user:password@host:port/dbname?sslmode=disable
postgresql://user:password@host:port/dbname
host=localhost user=postgres password=secret dbname=mydb port=5432

MySQL

mysql://user:password@tcp(host:port)/dbname
user:password@tcp(localhost:3306)/dbname

ClickHouse

clickhouse://user:password@host:port/database

SQLite

sqlite:///path/to/database.db
sqlite3:///path/to/database.db
/path/to/database.db
/path/to/database.sqlite

SQL Server

sqlserver://user:password@host:port?database=dbname
mssql://user:password@host:port?database=dbname
server=localhost;user id=sa;password=secret;database=mydb

Примеры конфигурации

YAML

yaml
url: "https://app.com/"
token: "your-token"
concurrency: 1
tags: "sql,postgres"
dsn: "postgres://user:password@localhost:5432/mydb?sslmode=disable"

Переменные окружения

bash
export URL="https://app.com/"
export TOKEN="your-token"
export DSN="postgres://user:password@localhost:5432/mydb"

Флаги командной строки

bash
./runner-sql \
  -url "https://app.com/" \
  -token "your-token" \
  -dsn "postgres://user:password@localhost:5432/mydb"

Выполнение запросов

SELECT-запросы

Определяются по ключевым словам: SELECT, WITH, SHOW, DESCRIBE, DESC, EXPLAIN.

Результат возвращается в формате CSV как артефакт query.csv.

sql
SELECT * FROM users WHERE age > 18;
SHOW TABLES;
DESCRIBE users;

Команды изменения данных

INSERT, UPDATE, DELETE и другие команды возвращают количество затронутых строк:

sql
INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
UPDATE users SET age = 25 WHERE id = 1;
DELETE FROM users WHERE id = 5;
CREATE TABLE products (id SERIAL PRIMARY KEY, name VARCHAR(100));

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

Переменные задач передаются как именованные аргументы:

Command: "SELECT * FROM users WHERE status = :status AND age > :min_age"
Variables: [
  { name: "status", value: "active" },
  { name: "min_age", value: 18 }
]

Артефакты

Для SELECT-запросов:

  • Результат сохраняется в query.csv
  • CSV содержит заголовки столбцов и данные
  • Возвращается artifact_id в статусе команды

Безопасность

  • DSN автоматически маскируется в логах (пароли скрываются)
  • Рекомендуется использовать SSL/TLS для продакшн окружений
  • Используйте переменные окружения для хранения DSN

Примеры

Подключение к PostgreSQL

bash
./runner-sql -dsn "postgres://user:pass@localhost:5432/mydb?sslmode=disable"

Подключение к MySQL

bash
./runner-sql -dsn "mysql://user:pass@tcp(localhost:3306)/mydb"

Подключение к SQLite

bash
./runner-sql -dsn "/path/to/database.db"

Выполнение запроса через платформу

  1. Создайте задачу с командой SQL
  2. Передайте переменные (если нужно)
  3. Runner выполнит запрос и вернет результат

Остановка

Корректно обрабатывает SIGINT и SIGTERM. Соединение с БД закрывается при завершении.