安装
dbc 从 ADBC Driver Foundry 安装驱动程序:
dbc 软件包版本为 26.7.0。要查看可用版本,请运行:
chdb 加载已安装的驱动程序。
支持在 x86-64 和 arm64 架构的 Linux 和 macOS 上运行。
通过 Python 连接
dbc 安装的 chDB 驱动程序:
连接生命周期
- 同一进程中所有同时打开的 ADBC 连接必须解析到相同的存储路径。
- 支持多个连接访问该路径,包括由不同线程并发使用的连接。对于并发查询,请为每个工作线程使用独立的连接,而不要在同一个连接上同时执行多个操作。
- 关闭最后一个连接会关闭嵌入式引擎。后续连接可以再次启动该引擎,也可以使用不同的存储路径,但反复关闭和启动会耗费时间和内存。需要重复执行操作时,请至少保持一个连接处于打开状态。
- 同一时间,只有一个操作系统进程可以打开指定的磁盘目录。请为每个进程使用独立的目录,或使用内存数据库。
将 ADBC 与 Python chDB 包配合使用
dbc 包会安装独立的原生 ADBC 驱动程序。它与 Python chdb 包加载的原生库彼此独立。
在同一 Python 进程中,不应预期由 dbc 加载的 ADBC 连接与常规 chdb 连接会共享内存中的表或引擎状态。对于给定的数据库路径,同一时间只能使用 ADBC 驱动程序或 Python chdb API;不要让两者同时打开同一个磁盘路径。要在两个 API 之间传输数据,请先关闭其中一方的所有连接,再打开另一方,或者通过 Arrow 或文件显式传递数据。
已实现的功能
尚未支持 表示该 ADBC 驱动程序能力尚未实现,但后续可以添加。不适用 表示该功能不适用于当前的 chDB 或 ClickHouse 执行模型。
数据库
连接
语句
批量摄取支持
create、append、create_append 和 replace 模式,可写入默认 database 或指定 database。
ClickHouse SQL 和类型行为
- 列默认不允许为 NULL,除非声明为
Nullable(...)。绑定到普通String列的带类型 NULL 将存储为空字符串,而不是 NULL。 - 使用 ClickHouse 标识符引用方式;示例中使用反引号。
- ClickHouse 数据库映射到 ADBC
db_schema。其上没有 catalog 层,因此不适用以 catalog 为作用域的操作。 Decimal不接受负标度,Date32的范围为 1900-01-01 至 2299-12-31。- 未指定时区的
DateTime64会按 engine 时区解释。 - 当前的 ClickHouse Arrow 输出不表示
Time类型,因此无法通过 ADBC 读回。
二进制数据存储为
String,并按 UTF-8 读回。因此,非有效 UTF-8 的载荷不支持作为可往返转换的 binary 值。
示例
从 Arrow 批量摄取数据
参数
C
dbc install chdb 后,C 驱动管理器可通过名称识别该驱动程序:
如何验证驱动程序
- Apache Arrow ADBC 一致性测试套件,用于检查 C 契约
- ADBC Driver Foundry 验证测试套件,用于检查 SQL 层面的行为、类型往返转换、元数据和批量摄取