开放数据库互连

出自 ArchWiki

开放数据库互连(Open Database Connectivity),通常缩写为 ODBC,是一个开放规范,旨在为应用程序开发者提供一个可预测的 API,用于访问数据源。一个 ODBC 引擎 需要 驱动 才能与 数据库 交互。

ODBC 引擎

您有两个引擎可供选择:unixODBC 和 iODBC。显然 unixODBC 得到更广泛的支持。本文档展示了如何设置 unixODBC。首先访问您本地主机上的数据库,然后扩展步骤以配置 MySQL 以允许通过 ODBC 进行远程访问。

此外,您可以从 Devart ODBC 驱动程序中选择各种适用于 SQL Server、Oracle、MySQL、SQLite、Firebird、PostgreSQL、Interbase 的驱动程序。

安装

安装 unixodbc 软件包。

配置

驱动程序在 /etc/odbcinst.ini 中声明,连接在 /etc/odbc.ini 中声明。更多说明请参考每个驱动程序部分。

驱动

FreeTDS

FreeTDS 是一组用于 Unix 和 Linux 的库,允许您的程序原生地与 Microsoft SQL Server 和 Sybase 数据库通信。从技术上讲,FreeTDS 是 TDS(表格数据流)协议的开源实现,这些数据库为其自己的客户端使用该协议。

安装

安装 freetds 软件包。

配置

/etc/odbcinst.ini
[FreeTDS]
Driver          = /usr/lib/libtdsodbc.so
UsageCount      = 1

FreeTDS 本身的配置文件是 /etc/freetds/freetds.conf

Myodbc

Myodbc 是 mariadb 的 ODBC 驱动程序/连接器。

安装

安装 mariadb-connector-odbcAUR 软件包。

配置

odbcinst.ini 开始,它列出了所有已安装的驱动程序。

/etc/odbcinst.ini
[MySQL]
Description     = ODBC Driver for MySQL
Driver          = /usr/lib/libmaodbc.so
FileUsage       = 1

SQLite

sqliteodbc 是 sqlite 的 ODBC 驱动程序/连接器。

安装

安装 sqliteodbcAUR 软件包。

配置

odbcinst.ini 开始,它列出了所有已安装的驱动程序。

/etc/odbcinst.ini
[SQLite3]
Description=SQLite ODBC Driver
Driver=/usr/lib/libsqlite3odbc.so
Setup=/usr/lib/libsqlite3odbc.so
Threading=2
UsageCount=1

PostgreSQL

psqlodbc 是 PostgreSQL 的 ODBC 驱动程序/连接器。

安装

安装 psqlodbcAUR 软件包。

配置

odbcinst.ini 开始,它列出了所有已安装的驱动程序。

/etc/odbcinst.ini
[postgresql]
Description=General ODBC for PostgreSQL 
Driver=/usr/lib/psqlodbca.so 
Setup=/usr/lib/psqlodbcw.so
Threading=2
FileUsage=1

数据库

Microsoft SQL Server 2000

/etc/odbc.ini
[server_name]
Driver      = FreeTDS
#Trace       = Yes
#TraceFile   = /tmp/odbc
Servername  = server_name
Database    = database_name
/etc/freetds/freetds.conf
[server_name]
host = 192.168.0.2 # Host name or IP address.
port = 1433 # Default port.
tds version = 7.1
client charset = UTF-8

SQL Server ODBC 驱动程序连接字符串和配置指南

Mariadb

/etc/odbc.ini(系统范围)或 ~/.odbc.ini(当前用户)中设置您的数据源。如果在这两个文件中都定义了数据源,则您主目录中的数据源优先。

[MySQL-test]
Description     = MySQL database test
Driver          = MySQL
Server          = localhost
Database        = test
Port            = 3306
Socket          = /var/run/mysqld/mysqld.sock
Option          =
Stmt            =

MariaDB ODBC 驱动程序连接字符串和配置指南

创建一个测试数据库

创建一个新的数据库 “test”。您可以使用 MySQL 前端之一,例如 mysql-workbench,或命令行 mysqladmin 命令

$ mysqladmin -h localhost -u root -p create test

测试 ODBC

要测试 ODBC 连接

$ isql MySQL-test

如果连接已建立,您将看到

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

如果您在连接时遇到问题,请运行以下命令检查错误消息

$ isql MySQL-test -v

一些有用的网站

https://www.unixodbc.org/doc/OOoMySQL.pdf

这个网站帮助我开始使用 ODBC 和 MySQL,但遗漏了一些我让 isql 运行起来所必需的东西。但是,这可能是 OpenOffice 部分的一个很好的参考。

http://mail.easysoft.com/pipermail/unixodbc-support/2004-August/000111.html

为了解决错误消息,这个 URL 证明很有帮助,所以这里也提供一下。

Postgresql

/etc/odbc.ini(系统范围)或 ~/.odbc.ini(当前用户)中设置您的数据源。如果在这两个文件中都定义了数据源,则您主目录中的数据源优先。

[Postgres-test]
Description     = Postgres database test
Driver          = postgresql
Servername      = localhost
Username        = postgres
Password        = test123
Database        = test
Port            = 5432
ReadOnly        = No

Virtuoso / SPARQL

/etc/odbc.ini
[ODBC Data Sources]
VOS = Virtuoso

[VOS]
Driver = virtuoso-odbc
Description = Virtuoso Open-Source Edition
Address = localhost:1111
/etc/odbcinst.ini
[virtuoso-odbc]
Driver = /usr/lib/virtodbc.so

使用默认凭据(用户名:“dba”,密码:“dba”)打开连接

$ isql VOS dba dba

SQLite

通过分配 sqlite 文件位置来设置 odbc.ini

/etc/odbc.ini
[ODBC Data Sources]
sampleDB            = SQLite3 Driver

[sampleDB]
Driver      = /usr/lib/libsqlite3odbc.so
Description = Sample DB
database    = /home/db/sample.sqlite