如何使用unixodbc和freetds在Mac上安装RODBC?

时间:2015-08-09 18:03:10

标签: macos rodbc unixodbc yosemite

经过相当广泛的搜索,我注意到很多人都很难找到一个回答这个问题的从头到尾的指南。 (至少one question注意到存在一个解决方案,但是提出的解决方案并没有解决这样一个事实:默认情况下,RODBC尝试针对iODBC进行编译,而iODBC并未包含在Yosemite中。)我刚刚完成了这个过程所以我想我会在这里记录它,希望它能使其他人受益。我正在连接到SQL Server数据库。

1 个答案:

答案 0 :(得分:7)

使用Homebrew作为我的OS X软件包管理器,我可以使用以下步骤安装RODBC(假设我已经安装了R)。

  1. 安装unixodbc

    $ brew install unixodbc
    
  2. 安装freetds(如果需要,将/usr/local/Cellar/unixodbc/2.3.2_1替换为您的unixodbc目录):

    $ brew install --with-tdsver=8.0 --with-msdblib --with-unixodbc=/usr/local/Cellar/unixodbc/2.3.2_1 freetds
    
  3. 配置freetds安装(以下是最小配置文件):

    freetds.conf

    # server specific section
    [global]
    ;       tds version = 8.0
    ;       dump file = /tmp/freetds.log
    ;       debug flags = 0xffff
    ;       timeout = 10
    ;       connect timeout = 10
            text size = 64512
    
    [TESTSQL]
            # insert the actual host below
            host = <xxx.xx.x.xx>
            port = 1433
            tds version = 8.0
    
  4. 测试freetds配置:

    $ tsql -H `<xxx.xx.x.xx>` -p 1433 -U `<username>` -P `<password>`
    
    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    using default charset "UTF-8"
    1> exit
    
  5. 配置unixodbc安装(以下是最小配置文件):

    $ sudo vim /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbcinst.ini
    

    odbcinst.ini

    [MSSQL]
    Description   = Microsoft SQL Server driver
    Driver        = /usr/local/Cellar/freetds/0.95.18/lib/libtdsodbc.so
    

    (和另一个最小安装文件):

    $ sudo vim /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbc.ini
    

    odbc.ini

    [ODBC Data Sources]
    TESTSQL     = Test database
    
    [TESTSQL]
    Driver      = MSSQL
    Servername  = TESTSQL
    Port        = 1433
    Database    = TMSEPRD
    TDS_Version = 8.0
    
  6. 使用isql测试新配置:

    $ isql TESTSQL `<username>` `<password>`
    
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL> quit
    
  7. 创建指向主目录中文件的符号链接:

    $ ln -vs /usr/local/Cellar/freetds/0.95.18/etc/freetds.conf ~/.freetds.conf
    $ ln -vs /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbc.ini ~/.odbc.ini
    $ ln -vs /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbcinst.ini ~/.odbcinst.ini
    
  8. 通过将以下代码行附加到文件中来查找和修改RProfile文件(将/usr/local/include替换为包含sql.h和{的包含目录{1}}文件;如果目录不存在,则第二行可能是不必要的):

    sqlext.h
  9. 现在将$ vim /Library/Frameworks/R.framework/Versions/3.2/Resources/library/base/R/Rprofile Sys.setenv(ODBC_INCLUDE="/usr/local/include") Sys.setenv(ODBC_LIBS="/usr/local/lib") 包源(您下载here)下载到“下载”文件夹。

  10. 打开一个新的R控制台会话并安装软件包(将RODBC替换为软件包源名称):

      

    install.packages(&#34;〜/ Downloads / RODBC_1.3-12.tar.gz&#34;,repos = NULL,type =&#34; source&#34;)

  11. 包现在应该可以使用:

    RODBC_1.3-12.tar.gz

    感谢Jared FolkinsGabi Huiber寻求帮助,找出R默认为RODBC的必备文件查找的目录。