驱动程序管理器¶
驱动程序管理器是一个库,它通过委托给动态加载的驱动程序来实现 ADBC API。这允许应用程序同时使用多个驱动程序,并将其自身与特定驱动程序分离。
安装¶
安装适当的驱动程序包。可以使用 conda-forge、apt
或 dnf
。
conda-forge
mamba install adbc-driver-manager
可以在以下平台上使用 apt
Debian GNU/Linux bookworm
Ubuntu 22.04
准备 Apache Arrow APT 仓库
sudo apt update
sudo apt install -y -V ca-certificates lsb-release wget
sudo wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
rm ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
安装
sudo apt install libadbc-driver-manager-dev
可以在以下平台上使用 dnf
AlmaLinux 8
Oracle Linux 8
Red Hat Enterprise Linux 8
AlmaLinux 9
Oracle Linux 9
Red Hat Enterprise Linux 9
准备 Apache Arrow Yum 仓库
sudo dnf install -y epel-release || sudo dnf install -y oracle-epel-release-el$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1) || sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
sudo dnf install -y https://apache.jfrog.io/artifactory/arrow/almalinux/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
sudo dnf config-manager --set-enabled epel || :
sudo dnf config-manager --set-enabled powertools || :
sudo dnf config-manager --set-enabled crb || :
sudo dnf config-manager --set-enabled ol$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)_codeready_builder || :
sudo dnf config-manager --set-enabled codeready-builder-for-rhel-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)-rhui-rpms || :
sudo subscription-manager repos --enable codeready-builder-for-rhel-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)-$(arch)-rpms || :
安装
sudo dnf install adbc-driver-manager-devel
然后可以使用 CMake,例如:
find_package(AdbcDriverPostgreSQL)
# ...
target_link_libraries(myapp PRIVATE AdbcDriverPostgreSQL::adbc_driver_postgresql_shared)
使用¶
要创建数据库,请照常使用 AdbcDatabase
API,但在初始化期间,除了特定于驱动程序的连接参数外,还要提供两个附加参数:driver
和(可选)entrypoint
。 driver
必须是要加载的库的名称,或要加载的库的路径。如果提供 entrypoint
,则它应该是充当 ADBC 入口点的符号的名称(请参阅 AdbcDriverInitFunc
)。
/* Ignoring error handling */
struct AdbcDatabase database;
memset(&database, 0, sizeof(database));
AdbcDatabaseNew(&database, NULL);
/* On Linux: loads libadbc_driver_sqlite.so
* On MacOS: loads libadbc_driver_sqlite.dylib
* On Windows: loads adbc_driver_sqlite.dll */
AdbcDatabaseSetOption(&database, "driver", "adbc_driver_sqlite", NULL);
/* Set additional options for the specific driver, if needed */
/* Initialize the database */
AdbcDatabaseInit(&database, NULL);
/* Create connections as usual */
API 参考¶
驱动程序管理器除了 ADBC API 之外,还包含一些额外的函数。请参阅 API 参考:adbc_driver_manager.h。