在我的实际工作中,数据来源一方面是关系型数据库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安装 : 软件安装包下载( msodbcsql-11.0.2270.0.tar.gz ),下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=36437 命令: tar xvzf msodbcsql-11.0.2270.0.tar.gz (安装包上传到linux 主机后解压) 命令: cd msodbcsql-11.0.2270.0 (切换至解压后主目录) 命令: ./install.sh verify (验证当前环境是否满足软件安装要求) 命令: ./install.sh install (上一步ok的前提下,执行安装) 命令: odbcinst -q -d -n "ODBC Driver 11 for SQL Server" (测试安装是否成功,如下则ok)Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1
ODBC配置 : 安装成功后,在 /etc 目录下能找着 odbcinst.ini 和 odbc.ini 文件 odbcinst.ini 表示本机已经安装了哪些类型的驱动,正确安装后内容如下
[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1
命令: vim /etc/odbc.ini (配置MS sqlserver 连接信息),在打开的文件中输入如下内容
[testsql]
Driver=ODBC Driver 11 for SQL Server
Server= 数据库服务器名或IP
Database=数据库名
注意: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
