Как мне установить RODBC на Mac с unixodbc и freetds?

После довольно обширных поисков я заметил, что многим людям трудно найти руководство для начала и до конца, которое отвечает на этот вопрос. (По крайней мере, один вопрос отмечает, что решение существует, но предлагаемое решение не позволяет обойти тот факт, что по умолчанию RODBC пытается скомпилировать с iODBC, который не включен в Yosemite.) Я только что прошел этот процесс, поэтому я думал, что я запишу это здесь в надежде, что это пойдет на пользу другим. Я подключаюсь к базе данных SQL Server.

1 ответ

Решение

Используя 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 с каталогом include, который содержит ваши sql.h а также sqlext.h файлы; вторая строка может быть ненужной, если каталог не существует):

    $ 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")
    
  9. Теперь загрузите RODBC источник пакета (который вы загружаете здесь) в папку "Загрузки".

  10. Откройте новый сеанс консоли R и установите пакет (заменяя RODBC_1.3-12.tar.gz с именем источника вашего пакета):

    install.packages ("~ / Downloads / RODBC_1.3-12.tar.gz", repos = NULL, type = "source")

Пакет должен теперь работать:

> library(RODBC)
> myconn <- odbcConnect("TESTSQL", uid="<userid>", pwd="<password>")

Спасибо Джареду Фолкинсу и Габи Хуиберу за помощь в выяснении того, какие каталоги R по умолчанию ищут в необходимых файлах для RODBC.

Другие вопросы по тегам