Drivers

An ADBC driver lets you connect to a database, run queries, and exchange data in Arrow format.

Available Drivers

ADBC drivers are typically built, distributed, and used as shared libraries (.so, .dll, or .dylib files). One shared library works from any language. An application uses an ADBC client library to dynamically load the driver at runtime, no matter which language the driver was written in. Every driver in the table below is packaged this way.

Driver for (click for docs)

Slug [1]

Maintainer [2]

Repo

BigQuery

bigquery

Foundry

ClickHouse

clickhouse

Vendor

Databricks

databricks

Foundry

Apache DataFusion

datafusion

Foundry

DuckDB [3]

duckdb

Vendor

Exasol

exasol

Vendor

Apache Arrow Flight SQL [4]

flightsql

ASF

Microsoft SQL Server

mssql

Foundry

MySQL/MariaDB [5]

mysql

Foundry

PostgreSQL [6]

postgresql

ASF

DuckDB Quack

quack

Foundry

Amazon Redshift

redshift

Foundry

SingleStore

singlestore

Vendor

Snowflake

snowflake

Foundry

Apache Spark

spark

Foundry

SQLite

sqlite

ASF

Trino

trino

Foundry

Installing Drivers

Pre-built binaries for the drivers in the table above are available from the ADBC driver registry hosted by Columnar, a company active in ADBC driver development. Binaries are available for Windows (amd64), macOS (arm64), and Linux (amd64 and arm64), and are code-signed and notarized by Columnar.

Users and applications can download a driver from the registry manually, or with the dbc command-line tool. With dbc installed, install any driver by its slug:

dbc install <slug>       # e.g. dbc install postgresql

dbc installs both the driver’s shared library and its driver manifest to a location where an ADBC client library can find the driver by its slug.

If you download a driver from the registry manually instead, you’ll need to install the driver shared library file to the correct location yourself and create a driver manifest for it, or else pass the full path to the shared library in your application code, plus the entrypoint if the driver does not use the default entrypoint name. See ADBC Driver Manager and Manifests for details.

Some drivers are also published to language-specific package registries. Apache-maintained drivers are on PyPI, conda-forge, CRAN, and more; some vendor drivers list their own packages in each driver’s documentation, linked from its name in the table above.

Note

The ADBC driver registry and the dbc command-line tool for installing drivers from it are provided by Columnar, and are maintained independently of the Apache Arrow project.

Language-Specific Drivers

Some drivers are built and packaged for a specific language or runtime rather than as dynamically loadable shared libraries. They run directly on that runtime, without crossing an FFI / ABI boundary, and are distributed through its package registry. They can be used from any language that targets that runtime. For example, the .NET drivers work from C#, F#, and other .NET languages, and the Java driver works from Java, Kotlin, Scala, and other JVM languages.

C#/.NET

Distributed as .NET packages on NuGet, for use from C#/.NET applications:

Java/JVM

Distributed as Maven packages, for use from Java applications:

Who Maintains These Drivers?

The ADBC project focuses primarily on the ADBC standard and client libraries, not on developing drivers and shipping driver binaries. The Maintainer column in the tables above identifies who maintains each driver:

ASF

A few drivers are maintained within the Apache Arrow project under Apache Software Foundation (ASF) governance, mostly for historical reasons.

Foundry

Most drivers are maintained within the ADBC Driver Foundry, a community-governed project focused on growing the ADBC ecosystem.

Vendor

Some drivers are maintained in independent repositories controlled by database vendors.

Have a Driver to Add?

If you’ve developed a high-quality ADBC driver, made it freely available for public use under a permissive license, and would like it listed here, open an issue on the Apache Arrow ADBC repository with the details (name, database, repository URL, package names) and we’ll help get it added.

Interested in developing a new driver? See Writing New Drivers.

More Information