Skip to content

unixODBC

unixODBC 是一个用于类 Unxi 操作系统的 ODBC 驱动管理工具。

安装

Bash
# debian
sudo apt install unixodbc unixodbc-dev

不同的数据库管理系统还需要安装不同的驱动:

Bash
# MariaDB / Mysql
sudo apt install odbc-mariadb
# PostgreSQL
sudo apt install odbc-postgresql

Note

对于商业发行版需要到对应数据库管理系统手册上查看

配置 ODBC 驱动

unixODBC 通过 /etc/odbcinst.ini 配置文件来配置 ODBC 驱动,如果是通过 apt 官方仓库安装的 odbc 驱动会自动帮我们在其中配置好:

INI
[MariaDB Unicode]
Driver=libmaodbc.so
Description=MariaDB Connector/ODBC(Unicode)
Threading=0
UsageCount=1

其中 MariaDB Unicode 定义了驱动的名称,而下面最核心的 Driver=path/to/driver 指定驱动的路径,默认会到 /usr/lib/x86_64-linux-gun/odbc/ 目录下查找,如果不确定也可以通过下面的命令搜索:

Bash
# 每个驱动的名称不太一样
find /usr -name "libmaodbc.so"

Note

推荐使用全路径,有些 ODBC 库不支持无法加载这样的驱动程序。

Note

同样支持 ~/.odbcinst.ini 来面向用户配置

配置数据源(DSN)

所谓的 DSN 就是 Database Source Name,即数据源名称。他们在 /etc/odbc.ini 文件中配置,如果是面向用户的也可以在 ~/.odbc.ini 中配置:

INI
[MySQLDatabase]
Description = MySQL Database Connection
Driver      = MySQL ODBC 8 Driver
Server      = localhost
Database    = mydb
User        = myuser
Password    = mypassword
Port        = 3306

其中 [MySQLDatabase] 是配置块,可以包含多个配置块。Driver 是 odbcinst.ini 中定义的驱动名称,而 Server、Database、User、Passowrd、Port 都是特定于数据库的连接信息。

Note

这里的配置主要是针对于 isql 的,对于编程语言的 ODBC 库通常只是连接 ODBC 驱动。

命令行工具

unixODBC 提供了几个实用的命令行工具来测试 ODBC 数据源配置和执行 SQL 查询。

isql(Interactive SQL): SQL 交互

isql 是一个 SQL 交互工具,主要用于检查 ODBC 驱动和 DSN 是否配置成功:

Bash
isql MySQLDatabase

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| echo [string]                         |
| quit                                  |
|                                       |
+---------------------------------------+

之后可以执行 SQL 命令来与该数据源进行交互。

odbcinst: 管理 ODBC 驱动程序

该命令实际上就是读取 unixODBC 配置文件:

Bash
# 列出已安装了 ODBC 驱动
odbcinst -q -d

# 列出已安装的 ODBC 软件源
odbcinst -q -s