R(六): RODBC 访问SqlServer

在我的实际工作中,数据来源一方面是关系型数据库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)
  • RODBC是R脚本连接ODBC的软件包

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
 
原文地址:https://www.cnblogs.com/zhp2016/p/5998374.html