开放数据库互连
开放数据库互连(Open Database Connectivity),通常缩写为 ODBC,是一个开放规范,旨在为应用程序开发者提供一个可预测的 API,用于访问数据源。一个 ODBC 引擎 需要 驱动 才能与 数据库 交互。
ODBC 引擎
您有两个引擎可供选择:unixODBC 和 iODBC。显然 unixODBC 得到更广泛的支持。本文档展示了如何设置 unixODBC。首先访问您本地主机上的数据库,然后扩展步骤以配置 MySQL 以允许通过 ODBC 进行远程访问。
此外,您可以从 Devart ODBC 驱动程序中选择各种适用于 SQL Server、Oracle、MySQL、SQLite、Firebird、PostgreSQL、Interbase 的驱动程序。
安装
配置
驱动程序在 /etc/odbcinst.ini
中声明,连接在 /etc/odbc.ini
中声明。更多说明请参考每个驱动程序部分。
驱动
FreeTDS
FreeTDS 是一组用于 Unix 和 Linux 的库,允许您的程序原生地与 Microsoft SQL Server 和 Sybase 数据库通信。从技术上讲,FreeTDS 是 TDS(表格数据流)协议的开源实现,这些数据库为其自己的客户端使用该协议。
安装
配置
/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