Как мне установить RODBC на Mac с unixodbc и freetds?
После довольно обширных поисков я заметил, что многим людям трудно найти руководство для начала и до конца, которое отвечает на этот вопрос. (По крайней мере, один вопрос отмечает, что решение существует, но предлагаемое решение не позволяет обойти тот факт, что по умолчанию RODBC пытается скомпилировать с iODBC, который не включен в Yosemite.) Я только что прошел этот процесс, поэтому я думал, что я запишу это здесь в надежде, что это пойдет на пользу другим. Я подключаюсь к базе данных SQL Server.
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
Проверьте
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
Настройте свой
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
Протестируйте новую конфигурацию с
isql
:$ 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
источник пакета (который вы загружаете здесь) в папку "Загрузки".Откройте новый сеанс консоли 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.