После довольно обширных поисков я заметил, что многим людям трудно найти руководство от начала до конца, которое отвечает на этот вопрос. (По крайней мере, один вопрос отмечает, что решение существует, но предлагаемое решение не обходит тот факт, что по умолчанию RODBC пытается выполнить компиляцию с iODBC, который не включен в Yosemite.) Я только что прошел этот процесс, поэтому решил задокументировать его здесь в надежде, что он будет полезен другим. Я подключаюсь к базе данных SQL Server.
Как установить RODBC на Mac с помощью unixodbc и freetds?
Ответы (1)
Используя Homebrew в качестве диспетчера пакетов OS X, я могу установить RODBC
, выполнив следующие действия (при условии, что я уже установил R).
Установить
unixodbc
:$ brew install unixodbc
Установите
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
Настройте установку
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
- #P5#
<цитата>$ 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
Настройте установку
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
- #P8#
<цитата>$ isql TESTSQL `<username>` `<password>`
цитата>+---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> quit
Создайте символическую ссылку на файлы в вашем домашнем каталоге:
$ 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
Найдите и измените файл
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")
Теперь загрузите исходный код пакета
RODBC
(который вы можете скачать здесь ) в папку «Загрузки».- #P12# <блочная цитата> #P13# блочная цитата>
Теперь пакет должен работать:
> library(RODBC)
> myconn <- odbcConnect("TESTSQL", uid="<userid>", pwd="<password>")
Благодаря Джаред Фолкинс и Gabi Huiber за помощь в выяснении того, в каких каталогах R по умолчанию ищет необходимые файлы для RODBC.