databow: CLI для баз данных через ADBC на Rust

Утилита командной строки для запросов к базам данных через ADBC.

Демонстрация работы databow в терминале

Возможности

  • Поддержка нескольких СУБД — подключайтесь к любой базе данных при наличии совместимого драйвера ADBC

  • Интерактивная SQL-оболочка — выполняйте SQL-запросы с историей команд и удобной навигацией

  • Подсветка синтаксиса — SQL-запросы выделяются цветом для лучшей читаемости

  • Форматированный вывод — результаты отображаются в аккуратных выровненных таблицах с динамической шириной столбцов

  • Экспорт в файл — сохраняйте результаты запросов в форматах JSON, CSV или Arrow IPC

  • Высокая скорость и компактность — написан на Rust для максимальной производительности при минимальном потреблении ресурсов

Установка

Установка через uv:

uv tool install databow

Установка через Cargo:

cargo install databow

Начало работы

Установите драйвер ADBC для DuckDB с помощью dbc:

dbc install duckdb

Интерактивный режим

Подключение к DuckDB (в памяти):

databow --driver duckdb

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

> CREATE TABLE penguins AS FROM 'https://blobs.duckdb.org/data/penguins.csv';
┌───────┐
│ Count │
├───────┤
│ 344   │
└───────┘
> SELECT *
. FROM penguins
. LIMIT 5;
┌─────────┬───────────┬────────────────┬───────────────┬───────────────────┬─────────────┬────────┬──────┐
│ species │ island    │ bill_length_mm │ bill_depth_mm │ flipper_length_mm │ body_mass_g │ sex    │ year │
├─────────┼───────────┼────────────────┼───────────────┼───────────────────┼─────────────┼────────┼──────┤
│ Adelie  │ Torgersen │ 39.1           │ 18.7          │ 181               │ 3750        │ male   │ 2007 │
│ Adelie  │ Torgersen │ 39.5           │ 17.4          │ 186               │ 3800        │ female │ 2007 │
│ Adelie  │ Torgersen │ 40.3           │ 18            │ 195               │ 3250        │ female │ 2007 │
│ Adelie  │ Torgersen │ NA             │ NA            │ NA                │ NA          │ NA     │ 2007 │
│ Adelie  │ Torgersen │ 36.7           │ 19.3          │ 193               │ 3450        │ female │ 2007 │
└─────────┴───────────┴────────────────┴───────────────┴───────────────────┴─────────────┴────────┴──────┘

Неинтерактивный режим

Выполнить запрос напрямую и выйти:

databow --driver duckdb --query "SELECT 42 AS the_answer"

Выполнить запрос из стандартного ввода и выйти:

echo "SELECT 42 AS the_answer" | databow --driver duckdb

Выполнить запрос из файла и выйти:

databow --driver duckdb --file select_example.sql

Выполнить запрос и сохранить результат в файл:

databow --driver duckdb --query "SELECT 42 AS the_answer" --output result.json
databow --driver duckdb --query "SELECT 42 AS the_answer" --output result.csv
databow --driver duckdb --query "SELECT 42 AS the_answer" --output result.arrow

Справка

$ databow --help
Query databases via ADBC

Usage: databow [OPTIONS]

Options:
      --profile <profile>    Connection profile name or path
      --driver <driver>      Driver name (required if --profile not specified)
      --uri <uri>            Database uniform resource identifier
      --username <username>  Database user username
      --password <password>  Database user password
      --option <option>      Driver-specific database option
      --mode <mode>          Table display style [default: utf8-compact]
      --query <query>        Execute query and exit
      --file <file>          Read and execute file and exit
      --output <file>        Write result to file
  -h, --help                 Print help
  -V, --version              Print version

Лицензия

Проект распространяется под лицензией Apache-2.0.

© 2026 meganuke