一.安装 unixODBC
这个使用YUM安装一下,不多说:
Linux 使用光盘搭建 本地 YUM 服务器
http://blog.csdn.net/tianlesoftware/article/details/7302358
[root@rac1 mnt]#yum install unixODBC
[root@rac1 mnt]#yum install unixODBC-devel
确认unixODBC的安装,使用isql命令,其是unixODBC自带的命令。可以使用这个命令验证unixODBC的配置。
[root@rac1 /]# isql --version
unixODBC 2.2.14
[root@rac1 /]# which isql
/usr/bin/isql
[root@rac1 /]# isql
**********************************************
* unixODBC - isql *
**********************************************
* Syntax *
* *
*isql DSN [UID [PWD]] [options]*
* *
* Options *
* *
* -bbatch.(no prompting etc) *
* -dxdelimit columns with x *
* -x0xXXdelimit columns with XX, where *
*x is in hex, ie 0x09 is tab *
* -wwrap results in an HTML table *
* -ccolumn names on first row. *
*(only used when -d) *
* -mnlimit column display width to n *
* -vverbose. *
* -lxset locale to x *
* -qwrap char fields in dquotes *
* -3Use ODBC 3 calls *
* -nUse new line processing *
* --versionversion *
* *
* Commands *
* *
* help - list tables *
* help table - list columns in table *
* help help - list all help options *
**
* Examples *
* *
*isql WebDB MyID MyPWD -w < My.sql*
* *
*Each line in My.sql must contain*
*exactly 1 SQL command except for the*
*last line which must be blank (unless *
*-n option specified).*
* *
* Please visit; *
* *
*http://www.unixodbc.org*
*pharvey@codebydesign.com*
*nick@easysoft.com*
**********************************************
[root@rac1 /]#
二.安装 FreeTDS
freeTDS官网地址:http://www.freetds.org/
FreeTDS is a setof libraries for Unix and Linux that allows your programs to natively talk toMicrosoft SQL Server and Sybase databases.
--FreeTDS是Unix 和Linux library的一个集合,通过FreeTDS可以连接到MicrosoftSQL Server 和 Sybase DB。
2.1 下载freeTDS:
[root@rac1 ~]# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/current/freetds-current.tgz
--2012-03-06 10:14:43--http://ibiblio.org/pub/Linux/ALPHA/freetds/current/freetds-current.tgz
Resolving ibiblio.org... 152.19.134.40
Connecting toibiblio.org|152.19.134.40|:80... connected.
HTTP request sent, awaiting response... 200OK
Length: 2192516 (2.1M) [application/x-gzip]
Saving to: “freetds-current.tgzâ€
100%[==========================================================>]2,192,516 43.7K/s in 37s
2012-03-06 10:15:21 (58.5 KB/s) -“freetds-current.tgz†saved [2192516/2192516]
2.2 安装freeTDS:
FreeTDS 的安装帮助,可以参考:
unixODBC - MS SQL Server/PHP
http://www.unixodbc.org/doc/FreeTDS.html
[root@rac1 ~]# tar xzf freetds-current.tgz
--查看configure的帮助文档:
[root@rac1 freetds-0.92.dev.20120305]# ./configure --help
--官网提供的方法:
# ./configure --with-tdsver=8.0--with-unixodbc=/usr/local
# make
# make install
注意这里:
如果 unixODBC是源码安装, 则–with-unixodbc=/usr/local
如果 unixODBC是rpm安装, 则不需要该选项
我们的unixODBC 是通过RPM包安装的,所以这里我们省略这个选项,直接configure。
# ./configure --with-tdsver=8.0 --prefix=/usr/local/freetds --enable-msdblib --with-gnu-ld --enable-shared --enable-static
--这次configure成功。这里我们将freetds 安装到/usr/local 目录下。
然后make:
# make
# make install
2.3 配置环境变量
将freetds的库文件所在路径配置到LD_LIBRARY_PATH参数中:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/:
设置bin路径
$vi /root/.bashrc
添加内容如下:
export FREETDS=/usr/local/freetds
export $PATH="$PATH:$FREETDS/bin"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib
三. 配置unixODBC 和 FreeTDS
3.1 向unixODBC登记 FreeTDS 驱动
修改/etc/odbcinst.ini (或者/usr/local/etc/odbcinst.ini) 文件,添加如下内容:
# Driver from FreeTDS package
# setup from FreeTDS package
[FREETDS]
Description = ODBC of FreeTDS for MS SQL 2008
Driver = /usr/local/lib/libtdsodbc.so
FileUsage = 1
3.2 在 FreeTDS 的配置文件中添加指向具体数据库的访问信息
修改/usr/local/etc/freetds.conf文件,添加如下内容:
[MYSQLSERVER]
host = 192.168.3.211
port = 1433
tds version = 8.0
client charset = UTF-8
注意:
client charset,客户端软件可识别的字符集,必需大于或等于服务端数据库使用的字符集.
由于 UTF-8 是所由字符集的超集,因此设置为 UTF-8 总是可行的.此外, FreeTDS的client charset不能设置为 UTF16.
3.3 修改/etc/odbc.ini (如果odbc是从源码安装,则 /usr/local/etc/odbc.ini)
在/etc/odbc.ini中添加如下内容:
[ODBC Data Sources]
TEST1dsn= My first Test DSN
TEST2dsn= My second Test DSN
[TEST1dsn] ; DSN 名
Driver = /usr/local/lib/libtdsodbc.so
Description = My First Test DSN
Trace = No
Servername = MYSQLSERVER ;在 freetds.conf中定义
Database = MYTESTDB ;库名
[TEST2dsn]
Driver = /usr/local/lib/libtdsodbc.so
Description = My Second Test DSN
Trace = No
Server = 192.168.3.211 ; 可以直接写数据库服务器的访问信息
Database = dave
Port = 1433
TDS_Version = 8.0
[Default]
Driver = /usr/local/freetds/lib/libtdsodbc.so
注意:
用 unixODBC 通过 freeTDS 访问 MS SQL Server 有两种配置方式.
(1)将服务器信息写在 freeTDS 的配置文件 $PREFIX/etc/freetds.conf 中,而 /etc/odbc.ini 中使用 Servername 来指向 freetds.conf 中设定的 DSN.
如上例中的[TEST1dsn]
(2)将服务器信息也一并写在 /etc/odbc.ini 中. 如上例中的 [TEST2dsn].
注意,关键字有所不同.例如, freetds.conf 中的 tds version 在 /etc/odbc.ini 中为TDS_Version.
方式(2)相对简单,但只有少数几个关键字可以控制freetds,至于freetds的其它特征则使用freetds的缺省配置.
方式(1)虽然复杂一些,但对freetds可进行更细致的控制,例如可指定客户端的字符集. 推荐使用方式(1)进行配置.
四.测试
无论是用客户端软件,还是编程访问数据库,通常要提供三个参数:DSN, UserName, Password.
以本文示例来说,
DSN = TEST1dsn 或 TEST2dsn
UserName = somename,
Password = somepasswd,
就意味着访问位于 192.168.3.211 的 MS SQL Server 库 dave. 查询结果的字符集为UTF-8.
unixODBC 提供的一个通用的 GUI 数据库连接客户端为 DataManager.
--测试DSN2
[root@rac1 freetds-0.91RC2]# isql -v TEST2dsndave dave
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from dave;
+------------+-----------+
| id| name |
+------------+-----------+
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 1| 1 |
| 2| 2 |
+------------+-----------+
SQLRowCount returns 13
13 rows fetched
SQL>
--测试DSN1
[root@rac1 freetds-0.91RC2]# isql -vTEST1dsn dave dave
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
五.关于字符集:
FreeTDS能够自动识别服务器端的charset. 因此 FreeTDS 需要用户设定客户端的charset. 这也就是客户端应用程序期待从FreeTDS获得的数据所应该使用的charset.
一旦client charset设定, FreeTDS将实现从 server charset <--> client charset的转换.
如果有两个客户应用程序都要访问同一个 MS SQLServer, 但很不幸,这两个客户程序所接受的字符集分别是 UTF-8 和 GB2312. 那么解决的办法是在FreeTDS.conf中设置两组DataSource,它们的服务器设置相同,但clientcharset分别设为 UTF-8和GB2312. 在 odbc.ini中也设置两组不同的DSN 分别指向这两组DataSource. 而最终两个客户程序各自使用与之相应的DSN即可.
整理自:
http://www.humin.com.cn/linux-unixodbc-freetds-ms-sql-server.html
PS:
使用这种方法可以解决RStudio 的中文乱码问题,如果直接在windows下使用RStudio,那么中文显示的是乱码,而使用Linux 下的RStudio Server + unixODBC,就可以解决中文乱码问题了。
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
Skype: tianlesoftware
Email: tianlesoftware@gmail.com
Blog: http://www.tianlesoftware.com
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware
-------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----
DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群:83829929 DBA5群: 142216823
DBA6 群:158654907 DBA7 群:172855474 DBA总群:104207940
分享到:
相关推荐
在linux下操作sqlerver 通过在linux下 安装unixODBC 和FreeTDS,从而可以操作sqlserver 就是otl编程中的odbc
本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL、Oracle、SQL Server数据库。 其中包括以下几个软件的安装及配置: unixODBC FreeTDS pyodbc cx_Oracle 欢迎转载...
unixODBC-2.3.1-14.el7.x86_64.rpm
包括: unixODBC-2.2.11-7.1.i386.rpm unixODBC-2.2.11-7.1.x86_64.rpm unixODBC-devel-2.2.11-7.1.x86_64.rpm unixODBC-devel-2.2.11-7.1.i386.rpm
包含unixODBC-2.2.11-7.1.i386.rpm和unixODBC-devel-2.2.11-7.1.i386.rpm
unixODBC是一个来连接数据库的组件。 ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问DBMS
linux下oracle通过unixODBC连接MySQL linux下oracle通过unixODBC连接MySQL
unixODBC安装说明 用于unixODBC安装说明。。 。。。。。。
SAP-MAX/DB (natively via SAP/DB CLI), ODBC 3.x as well as ODBC 2.5 (for legacy applications) compliant data sources in MS Windows, Linux/Unix/Mac OS X (via unixodbc and iODBC driver managers): Sybase...
unixODBC-2.3.9安装包
ODBC11 sqlserver client for linux ODBC11 sqlserver client for linux
基于ARM64架构linux系统的RabbitMQ离线安装依赖包unixodbc_2.3.1-4.1-arm64.deb
安装unixODBC Redhat 6上通过rpm包安装unixODBC rpm –ivh unixODBC-2.2.14-11.el6.x86_64.rpm rpm –ivh unixODBC-devel-2.2.14-11.el6.x86_64.rpm
linux rpm包telnet_server+安装oracle包 libaio-devel-0.3.106-3.2.i386.rpm telnet-server-0.17-38.el5.i386.rpm sysstat-7.0.0-3.el5.i386.rpm sysstat-7.0.2-3.el5.i386.rpm unixODBC-2.2.11-7.1.i386.rpm ...
linux 5.4 32位系统包unixODBC-devel-2.2.11-7.1.i386.rpm
unix/linux 下很好用的odbc
unixODBC软件包,用于linux下安装oracle数据库
如果您想使用最新版本的UnixODBC2.3.11,以下是一些安装和使用的推荐说明: 下载UnixODBC2.3.11的源代码包。 解压缩源代码包,并进入解压缩后的目录。 运行"./configure"命令来配置UnixODBC的安装选项。您可以...
unixODBC-devel.rpm
libaio-devel-0.3.106-3.2.i386.rpm,libaio-devel-0.3.106-3.2.x86_64.rpm,sysstat-7.0.2-3.el5.x86_64.rpm,unixODBC-devel-2.2.11-7.1.i386.rpm,unixODBC-2.2.11-7.1.i386.rpm,unixODBC-2.2.11-7.1.x86_64.rpm...