databow: a Rust CLI to query any database with an ADBC driver

Hacker News Top Tools

Summary

databow is a new open-source Rust CLI tool that provides a unified interface for querying any database with an ADBC driver, supporting over 30 databases including PostgreSQL, DuckDB, and Snowflake.

No content available
Original Article
View Cached Full Text

Cached at: 06/05/26, 11:06 AM

# Introducing databow Source: [https://columnar.tech/blog/introducing-databow/](https://columnar.tech/blog/introducing-databow/) TL;DR databow is a new open source command\-line tool for querying any database that has an ADBC driver\. Built in Rust, databow gives you one fast, modern interface to the SQL systems across your entire data stack\. Install it with`uv tool install databow`\. In a typical day, a data engineer might query a local embedded database, a distributed cloud data warehouse, and an enterprise relational database server—each with its own CLI\.`psql`,`mysql`,`snowsql`,`bq`,`sqlite3`: different flags, different output formats, different quirks\. Switching between them means relearning syntax and reformatting results\. GUI tools exist, but they’re heavyweight and pull you out of the terminal\. What if one fast, modern CLI could connect to any database? ## Meet databow Today, we’re excited to introduce**databow**—an open source command\-line tool for querying databases with ADBC \(Arrow Database Connectivity\)\. databow is built in Rust for fast queries and a small footprint\. It connects to any database that has an ADBC driver, giving you one unified interface for the SQL systems across your entire data stack\. ![](https://columnar.tech/blog/databow-logo.svg) ## What databow can do ### Connect to 30\+ databases databow works with any database that has an ADBC driver\. That includes: - **Transactional databases:**PostgreSQL, MySQL, MariaDB, SQLite, Oracle Database, Microsoft SQL Server, CockroachDB, YugabyteDB, TiDB - **Analytical databases:**DuckDB, ClickHouse, Snowflake, BigQuery, Databricks, Amazon Redshift, Teradata - **Lakehouse engines:**Trino, Dremio, StarRocks, Apache Doris - **Time\-series databases:**InfluxDB, TimescaleDB, GreptimeDB The list keeps growing as the ADBC ecosystem expands\. ### Run queries in an interactive SQL shell databow provides a modern REPL with the features you’d expect: ``` $ databow --driver duckdb > SELECT * FROM 'sales.parquet' LIMIT 5; ┌────────────┬─────────┬──────────┐ │ date │ product │ revenue │ ├────────────┼─────────┼──────────┤ │ 2026-01-15 │ Widget │ 1250.00 │ │ 2026-01-15 │ Gadget │ 890.50 │ │ 2026-01-16 │ Widget │ 1100.00 │ │ 2026-01-16 │ Gizmo │ 2340.00 │ │ 2026-01-17 │ Gadget │ 756.25 │ └────────────┴─────────┴──────────┘ ``` - **Syntax highlighting**with automatic light/dark theme detection - **Multiline SQL input**for complex queries - **Clean, aligned tables**with dynamic column widths - **Command history**for navigating previous queries ### Export your results Need to share your query results? Export directly to the format you need: ``` # Export to CSV databow --driver postgresql --uri "postgres://localhost/analytics" \ --query "SELECT * FROM monthly_report" \ --output report.csv # Export to JSON databow --profile warehouse --query "SELECT * FROM users" \ --output users.json # Export to Arrow IPC databow --profile prod-db --query "SELECT * FROM events" \ --output events.arrow ``` ### Power your automations databow isn’t just for interactive use\. It’s designed to fit into scripts and pipelines: ``` # Execute a query directly databow --driver duckdb --uri warehouse.db --query "SELECT count(*) FROM logs WHERE level = 'ERROR'" # Read from a SQL file databow --driver postgresql --uri "postgres://localhost/analytics" \ --file daily_metrics.sql --output metrics.csv # Pipe queries from stdin echo "SELECT version()" | databow --driver postgresql --uri "$DATABASE_URL" ``` ### Load connection details from profiles Tired of typing long database connection strings? Save your configurations in[ADBC connection profiles](https://cookbook.columnar.tech/use-adbc-connection-profiles-in-python/)and refer to them by name: ``` # Use a saved profile databow --profile production-warehouse --query "SELECT * FROM orders" ``` ## Why ADBC databow is built on ADBC—the Arrow Database Connectivity standard from the Apache Arrow project\. ADBC provides a vendor\-neutral API for database access, similar to what JDBC and ODBC do for legacy connectivity\. But ADBC is designed from the ground up to transfer data in the Apache Arrow format\. That means: - **Efficient data transfer:**Results come back in Arrow’s columnar format, and when the database speaks Arrow natively, that means no row\-by\-row serialization overhead at all\. - **Consistent behavior:**The same API works across databases\. - **Growing ecosystem:**As more databases add ADBC drivers, databow automatically supports them\. By building on ADBC, databow benefits from the work of the entire Arrow community\. When a new database releases an ADBC driver, databow users get access immediately\. ## Get started databow ships as a single binary\. Install it with uv or Cargo: ``` # Recommended: install with uv uv tool install databow # Alternative: install with Cargo cargo install databow ``` Then install the ADBC driver for your database using[dbc](https://docs.columnar.tech/dbc/), the command\-line tool for installing and managing ADBC drivers\. For example, to install the ADBC driver for DuckDB: ``` dbc install duckdb ``` Then start querying: ``` databow --driver duckdb ``` ## Roadmap We’re actively working on new features to make databow even more powerful: - **Dot commands:**Interactive commands for quick configuration and exploration - **More export formats:**Support for writing results to Parquet and other file types - **Result set truncation:**Configurable limits for large result sets to keep your terminal responsive - **Data type display:**Show column data types alongside query results for better schema visibility

Similar Articles

DuckDB: it's not quack science

Lobsters Hottest

DuckDB is an open-source embedded analytical database that supports direct querying of files, embedding into applications, and provides friendly SQL extensions. It is more efficient than traditional Unix pipes in data analysis scenarios.

@Huahuazo: Attention, database folks — you no longer need to clutter your desktop with a bunch of clients. I stumbled upon a treasure tool called DBX, a single client that connects all mainstream databases: ① MySQL, PostgreSQL, SQLite ② Redis, MongoDB, ClickHouse ③ Even domestic ones like OceanBase and openGauss are supported.

X AI KOLs Timeline

DBX is a lightweight multi-database client supporting 60+ databases including MySQL, PostgreSQL, Redis, and MongoDB. The installer is only 15MB and comes with an AI assistant that can generate SQL from natural language.

tursodatabase/turso

GitHub Trending (daily)

Turso Database is an in-process SQL database written in Rust, compatible with SQLite, featuring MVCC, change data capture, vector support, and multi-language bindings.

dbt-labs/dbt-core

GitHub Trending (daily)

dbt Core v2.0 is a ground-up rewrite in Rust, currently in alpha. It promises dramatically faster parsing, stricter language specification, and scalable Parquet artifacts, making data transformation more efficient for analysts and engineers.