adbcBridge is a single C library that turns any ODBC driver on your machine into an Apache Arrow ADBC driver. Point it at a database you already reach through ODBC — Db2, Oracle, SQL Server, SQLite, PostgreSQL, ClickHouse, Vertica, SAP HANA, or anything else with an ODBC driver — and read the results as Arrow record batches from Python, Rust, C#, Java, Go, R or C, with no per-database code of your own.
Two acronyms show up on every page, so here they are once:
- ODBC (Open Database Connectivity) — the decades-old C API almost every database ships a driver for. You talk to a driver manager (a small system library), which loads the vendor driver for your database.
- ADBC (Arrow Database Connectivity) — a newer C API whose result sets are Apache Arrow columnar batches instead of ODBC's row-at-a-time buffers. ADBC clients exist for many languages.
adbcBridge is the piece in between.
One shared library — libadbc_driver_odbc.so on Linux,
libadbc_driver_odbc.dylib on macOS, libadbc_driver_odbc.dll on Windows —
written in plain C11. It exposes the ADBC ABI (Application Binary Interface,
the exact function-pointer layout an ADBC client expects) on top, and calls the
ODBC driver manager underneath. It is exactly one file. The driver manager and
the vendor ODBC drivers are already yours; adbcBridge does not replace them or
bundle them.
Python · Rust · C# · Java · Go · R · C your application + its ADBC client
│ ADBC ABI (1.0.0 / 1.1.0)
▼
libadbc_driver_odbc.{so,dylib,dll} adbcBridge — one shared library
│ ODBC API
▼
unixODBC · iODBC · the Windows driver manager the driver manager (yours)
│
▼
psqlodbc · msodbcsql · Db2 CLI · Oracle · … the vendor ODBC driver (yours)
│
▼
your database
A SELECT becomes Arrow record batches; parameters, prepared statements,
transactions, bulk ingest, and catalog metadata all map onto the ODBC calls
underneath. Where a database already has a first-class native ADBC driver
(PostgreSQL, SQLite, DuckDB, and others), adbcBridge can hand the whole
connection over to it — see Native delegation.
- You need Arrow-native access to a database that has no native ADBC driver, and you would rather not hand-roll ODBC-to-Arrow conversion.
- You already have ODBC drivers installed and configured, and want every language's ADBC client to use them.
- You are building a data tool and want one code path that reaches hundreds of databases instead of one integration per vendor.
You do not need to know ODBC to use adbcBridge — the getting-started pages walk you through installing a driver manager and a driver from scratch — but the reference pages explain what is happening whenever you want to look under the hood.
- Your language's ADBC client (for example
adbc_driver_managerin Python) loadslibadbc_driver_odbcand calls its ADBC entry point,AdbcDriverInit. - You pass an ODBC connection string as the ADBC
urioption, for exampleDriver=SQLite3;Database=my.db;. adbcBridge hands it to the ODBC driver manager, which loads the vendor driver and connects. - adbcBridge reads each result set through ODBC's block-fetch and column-wise binding calls and builds Arrow record batches, which flow back to your application through the ADBC ABI.
The library is discoverable by name: an install writes a small ADBC driver
manifest (odbc.toml) into a directory the ADBC driver manager already
searches, so every binding can load it as driver="odbc" with nothing else set.
See Connection strings and
Options for the details.
adbcBridge is early software — version 0.1.3, published on GitHub Releases.
| Verified as of 2026-09-04 (rows measured on 0.1.0; 0.1.1 changed native delegation only, re-probed on the 14 PostgreSQL-wire rows on 2026-09-05; the 2026-09-15 releases changed PostgreSQL temporal types, Windows array ingest and the psqlodbc session time zone, re-run on 42 Linux rows and then on the 14 PostgreSQL-wire rows that day) | |
|---|---|
| Databases (one workload: types, NULLs, Unicode, parameters, bulk ingest, batched reads, metadata, errors) | 53 on Linux, 45 on macOS, 48 on Windows |
| Language packages | five — Python, Rust, C#, Java, Go (R is smoke-tested) |
| ADBC ABI | 1.0.0 and 1.1.0 |
| Release | v0.1.3: four prebuilt libraries, four wheels + sdist, crate, NuGet package, jar; on PyPI, crates.io, nuget.org and Maven Central; SHA256SUMS, its GPG signature, build provenance and an SBOM on the release (how to verify) |
Each verified database is listed, with the exact driver and any quirks handled, in COMPATIBILITY.md. Reachability is far wider than verification: adbcBridge can talk to anything with an ODBC driver, and the ODBC ecosystem covers a few hundred data sources. What the numbers above count is what has actually been run end to end. See ROADMAP.md for what is planned.
Tip: The three per-operating-system numbers differ because of driver and server availability on each machine, not because the bridge behaves differently. Where a database is missing on one platform it is almost always because, as of 2026-09-04, no obtainable ODBC driver or runnable server exists there.
| I want to… | Page |
|---|---|
| Install on Linux | getting-started/install-linux.md |
| Install on macOS | getting-started/install-macos.md |
| Install on Windows | getting-started/install-windows.md |
| Run my first query, in any language | getting-started/first-query.md |
| Use it from Python | languages/python.md |
| Use it from Rust | languages/rust.md |
| Use it from C# | languages/csharp.md |
| Use it from Java | languages/java.md |
| Use it from Go | languages/go.md |
| Use it from C | languages/c.md |
Look up a driver option (adbc.odbc.*) |
reference/options.md |
| Write an ODBC connection string | reference/connection-strings.md |
| Understand the Arrow type mapping | reference/types.md |
| Understand a per-driver quirk | reference/quirks.md |
| Understand native delegation | how-it-works/delegation.md |
| Build from source | reference/building.md |
| Use the command line | languages/python.md |
| Use environment variables | reference/options.md |
| Fix an error | TROUBLESHOOTING.md |
| See exactly which databases are verified | COMPATIBILITY.md |
| See what is planned | ROADMAP.md |
| See the upstream bugs this project reported | UPSTREAM.md |
| Contribute | community/contributing.md |
| Read frequently asked questions | community/faq.md |
adbcBridge is Apache-2.0.