Appearance
SQL Runner
Описание
runner-sql — раннер для выполнения SQL-запросов к различным базам данных через платформу Unishift. Поддерживает PostgreSQL, MySQL, ClickHouse, SQLite и SQL Server.
Возможности
- Поддержка множества СУБС
- Автоматическое определение типа БД по DSN
- Выполнение SELECT-запросов с выгрузкой результатов в CSV
- Выполнение INSERT, UPDATE, DELETE и других команд
- Подстановка параметров через именованные аргументы
- Маскирование паролей в логах
Поддерживаемые базы данных
| База данных | Префикс DSN |
|---|---|
| PostgreSQL | postgres://, postgresql:// |
| MySQL | mysql:// |
| ClickHouse | clickhouse:// |
| SQLite | sqlite://, sqlite3://, *.db, *.sqlite |
| SQL Server | sqlserver://, mssql:// |
Конфигурация
Общие параметры runner-common
См. Общая документация.
SQL-specific параметры
| Параметр | Описание | Обязательный |
|---|---|---|
-dsn / DSN / dsn | Data 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=5432MySQL
mysql://user:password@tcp(host:port)/dbname
user:password@tcp(localhost:3306)/dbnameClickHouse
clickhouse://user:password@host:port/databaseSQLite
sqlite:///path/to/database.db
sqlite3:///path/to/database.db
/path/to/database.db
/path/to/database.sqliteSQL 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"Выполнение запроса через платформу
- Создайте задачу с командой SQL
- Передайте переменные (если нужно)
- Runner выполнит запрос и вернет результат
Остановка
Корректно обрабатывает SIGINT и SIGTERM. Соединение с БД закрывается при завершении.