在我的实际工作中,数据来源一方面是关系型数据库MS SqlServer, 别一方面是HBase。本节主要介绍通过RODBC访问MS SqlServer 安装配置,参见资料(https://msdn.microsoft.com/en-us/library/hh568454(v=sql.110).aspx),请注意:下载的msodbc 的版本与 unixODBC的版本之间有强制的对应关系,参见:(https://msdn.microsoft.com/en-us/library/hh568449(v=sql.110).aspx),本文选择安装的是 msodbcsql-11.0.2270.0 ,按官方介绍,对应的unixodbc 版本为:unixODBC-2.3.0
目录:
- unixODBC安装
- Msodbcsql安装
- ODBC配置
- RODBC安装
- RODBC调用示例
说明:
- unixODBC提供了Linux对ODBC的支持,但它只是一个ODBC的管理器,要连接实际的数据库还需要提供这种数据库的ODBC驱动
- msodbcsql就是Linux下用于连接sqlServer的免费ODBC驱动 (注意: 必须先装unixODBC,再安装sqlserverodbc)
unixODBC安装:
- 软件安装包下载(unixODBC-2.3.0.tar.gz),下载地址:https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/
- 命令:yum remove unixODBC (如果机器上已经安装其它版本的unixODBC)
- 命令:tar xvzf unixODBC-2.3.0.tar.gz (将下载到本地的软件包上传至linux主机并解压)
- 命令:cd unixODBC-2.3.0 (切换至解压后的目录)
- 命令:CPPFLAGS="-DSIZEOF_LONG_INT=8"
- 命令:export CPPFLAGS
- 命令:./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE
- 命令:make (编译安装)
- 命令:make install
Msodbcsql安装:
ODBC配置:
- 安装成功后,在 /etc 目录下能找着 odbcinst.ini 和 odbc.ini 文件
- odbcinst.ini 表示本机已经安装了哪些类型的驱动,正确安装后内容如下
[ODBC Driver 11 for SQL Server]Description=Microsoft ODBC Driver 11 for SQL ServerDriver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0Threading=1UsageCount=1
命令:vim /etc/odbc.ini (配置MS sqlserver 连接信息),在打开的文件中输入如下内容
[testsql]Driver=ODBC Driver 11 for SQL ServerServer= 数据库服务器名或IPDatabase=数据库名
注意:Driver 赋值必须与 odbcinst 文件中 安全一致
- 命令:isql testsql sa XXXX (testsql: 设置的odbc连接名,后面以空格输入用户名和密码,成功连接则OK,如图)
- 命令: quit (退出)
RODBC安装:
- 命令:R (进入R命令行)
- 执行:install.packages("RODBC") (安装RODBC)
- 安装完成后,在R命令行下执行如下脚本,结果如下则OK
library(RODBC)pile <- odbcConnect("testsql",uid = "sa",pwd = "yourPassword")data <- sqlQuery(pile,"select top 5 code,name from codeItems")close(pile)data
- 结果如下,则ok
原标题:R(六): RODBC 访问SqlServer
关键词:sql