qgun

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2025 License: MIT Imports: 13 Imported by: 0

README

qgun

Утилита для выполнения SQL-запросов к нескольким базам данных (шардам) параллельно или последовательно с выводом результатов в табличном или CSV формате.

На данный момент поддерживается только PostgreSQL см. Формат строки подключения

Использование

qgun [FLAGS] -q SQL_QUERY [ARGS] qgun [FLAGS] -f SQL_FILE [ARGS]

Обязательные параметры:

  • -c - строки подключения к БД (через запятую) либо через переменную окружения DB_CONN_STRINGS
  • либо -f SQL_FILE, либо -q SQL_QUERY
Примеры использования

Выполнить запрос из файла к двум базам данных параллельно, вывод в CSV:

./qgun -c 'host=localhost port=5432 user=user1 password=pass1 dbname=db1,host=localhost port=5432 user=user2 password=pass2 dbname=db2' -f query.sql -p -o csv

С использованием переменных окружения:

export DB_CONN_STRINGS='host=localhost dbname=test,host=remote dbname=prod'
export SQL_QUERY='SELECT count(*) FROM users'
./qgun -p

С использованием параметров в запросе и таймаутом

# параметры программы и будут параметрами SQL-запроса
./qgun -t 10s -c 'user=user1 password=pass1 dbname=db1' -q 'SELECT count(*) FROM users WHERE name = $1' James
Все параметры командной строки:
-c string
      Строки подключения к БД (через запятую) (env DB_CONN_STRINGS)
-f string
      Имя файла с SQL-запросом (env SQL_FILE)
-q string
      SQL-запрос (env SQL_QUERY)
-t duration
      Таймаут выполнения запроса (env QUERY_TIMEOUT) (default 5s)
-l int
      Ограничение количества возвращаемых строк (0 - без ограничения) (env MAX_ROWS) (default 200)
-o string
      Формат вывода возвращаемого результата [table, csv] (env OUTPUT_FORMAT) (default "table")
-p    Параллельное выполнение запросов (env PARALLEL_MODE) (default false)
-v    Включение debug логов (default false)
Переменные окружения:

Все параметры можно также задать через переменные окружения:

  • DB_CONN_STRINGS - строки подключения к БД
  • SQL_FILE - файл с SQL-запросом
  • SQL_QUERY - SQL-запрос
  • QUERY_TIMEOUT - таймаут выполнения
  • MAX_ROWS - ограничение количества строк
  • OUTPUT_FORMAT - формат вывода
  • PARALLEL_MODE - параллельный режим

Форматы вывода

  • table - табличный формат с выравниванием столбцов
  • csv - данные в формате CSV с разделителем-запятой

Особенности работы

  • При ошибке в любом из подключений утилита завершится с ненулевым кодом возврата
  • В режиме параллельного выполнения порядок вывода результатов может быть произвольным
  • Вне зависимоти от выбора формата вывода каждая строка результата дополняется признаком номера коннекта по порядку начиная с DB_0
  • Утилита предназначена в первую очередь для SELECT-запросов, но позволяет выполнять любой запрос выполнение которого предпологает возврат строк
  • Заданый напрямую SQL запрос в приоритетнее файла с запросом

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL