【整理】在Linux安装UNIXODBC的方法

ODBC是一种数据库标准。下面是维基百科对ODBC的介绍:

“ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS(Database ManagementSystem)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。微软公司在1993年以DLL集的方式发布了世界上第一个ODBC产品,现在成为了微软开放服务结构(WOSA,Windows Open Services Architecture)中,有关数据库的一个组成部分。微软的ODBC产品其实就是一个ODBC的驱动管理器,提供一个ODBC应用程序到某种ODBC驱动的接口。在UNIX系统上,有两个开源的ODBC驱动管理器,unixODBC和iODBC。 ”


ODBC使用DSN保存连接到数据库系统的信息。在使用之前,ODBC程序需要打开到DSN的连接。ODBC的DSN分为四类——系统DSN、用户DSN、文件DSN,或许还包括Connection.Open语句临时创建的DSN。在UNIXODBC里,在/etc/odbc.ini里保存着系统DSN,而在~/.odbc.ini里保存着用户DSN。通常,向外提供服务的程序使用系统DSN。

接下来我们要配置一个DSN供ODBC存储CDR记录。首先在MySQL中创建一个数据库,接下来是安装与配置UNIXODBC。因为我们使用MySQL服务器,还要注意安装MySQL的ODBC驱动程序。

sudo apt-get install unixodbc libmyodbc

UNIXODBC的配置文件主要是/etc/odbcinst.ini以及/etc/odbc.ini。前者用于配置驱动程序,后者,正如上文所述,用于保存系统DSN。刚才安装了MySQL的驱动程序,需要把它的配置信息填写到 vi /etc/odbcinst.ini内。现在打开你所喜爱的编辑器,编辑 vi /etc/odbcinst.ini:

[MySQL]
Description     = MySQL driver for Linux
Driver          = /usr/lib/odbc/libmyodbc.so
Setup           = /usr/lib/odbc/libodbcmyS.so
FileUsage       = 1

配置信息依次是驱动程序描述、驱动程序位置、配置程序位置、驱动程序使用次数。实际的驱动程序位置依Linux发行版的不同而有所差异。Ubuntu通常位于/usr/lib/odbc/下。Suse位于/usr/lib/unixODBC/。RedHat等发行版可能有所不同。

然后是配置DSN,接下来我们创建一个名为AsteriskDB的DSN。编辑/etc/odbc.ini文件

[AsteriskDB]
Description = The Database for Asterisk
Trace       = On
TraceFile   = stderr
Driver      = MySQL
SERVER      = localhost
USER        = root
PASSWORD    = mypassword
PORT        = 3306
DATABASE    = asterisk

在配置文件里,DSN的名字即为Section的名字。在配置信息中,有一部分配置项是ODBC使用的,另一部分则由驱动程序处理。下面几个是由ODBC使用的配置项:

Description                 描述信息
Trace                       是否跟踪SQL语句。有“On”和“Off”两种值
TraceFile                   如果跟踪SQL语句。将跟踪信息保存到何文件中。如果填写stderr就会打印到标准输出
Driver                      在/etc/odbcinst.ini里配置的驱动程序名字。

配置文件里的“SERVER”、“USER”等信息是MySQL驱动程序使用的信息。这里有一些示例:

[PostgreSQL]
Description         = Test to Postgres
Driver              = PostgreSQL
Trace               = Yes
TraceFile           = sql.log
Database            = nick
Servername          = localhost
UserName            =
Password            =
Port                = 5432
Protocol            = 6.4
ReadOnly            = No
RowVersioning       = No
ShowSystemTables    = No
ShowOidColumn       = No
FakeOidIndex        = No
ConnSettings        =
 
[Mini SQL]
Description     = MiniSQL
Driver          = MiniSQL
Trace           = No
TraceFile       =
Host            = localhost
Database        =
ConfigFile      =
 
[MySQL-test]
Description     = MySQL test database
Trace       = Off
TraceFile   = stderr
Driver      = MySQL
SERVER      = 192.168.1.26
USER        = pharvey
PASSWORD    =
PORT        = 3306
DATABASE    = test
 
[nntp Data Source]
Description     = nntp Driver
Driver          = nntp Driver
Trace           = No
TraceFile       =
Host            = localhost
Database        =
Port            =
 
[FreeTDS driver]
Driver = TDS
Description = Northwind sample database
Trace = No
Server = 192.168.1.25
Database = Northwind
UID = sa
 
[Sybase SQL Anywhere 5.0]
Driver=Sybase SQL Anywhere 5.0
Description=Sybase SQL Anywhere 5.0 ODBC Driver
Userid=dba
Password=sql
DatabaseFile=sademo.db

如果操作完全正确的话,现在ODBC已经成功了。可以试下isql命令操作刚配置的DSN。

$ isql asteriskdb
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show tables;
+-----------------------------------------------------------------+
| Tables_in_asterisk                                              |
+-----------------------------------------------------------------+
+-----------------------------------------------------------------+
SQLRowCount returns 0
SQL>

这个命令行界面与mysql命令类似,可以进行各种数据库操作。至此,UNIXODBC已经安装成功了。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值