1. 程式人生 > >MacOS環境下,通過 R 連線 sqlserver

MacOS環境下,通過 R 連線 sqlserver

Mac環境安裝 sqlserver 看這篇文章

通過 R 連線 sqlserver 等資料庫,重要的是配置 odbc 驅動和驅動資料來源,在 mac 環境下,使用 unixODBC 配合 freeTDS 實現。

Install unixODBC

brew update
brew install unixodbc

Install freeTDS

brew install freetds --with-unixodbc

安裝好之後檢視配置

odbcinst -j

$ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /Users/ianly/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

配置相關配置檔案

vim /usr/local/etc/freetds.conf

[MYMSSQL]
host = 127.0.0.1
port = 1401
tds version = 8.0
client charset = UTF-8

vim /usr/local/etc/odbc.ini

[mytest]
Driver=/usr/local/lib/libtdsodbc.so
Trace=No
Server=127.0.0.1
Port=1401
TDS_Version=8.0
Database=mhga002

測試連線

測試odbc驅動
$ isql mytest sa 1234qwer!
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

R通過 RODBC 連線 sqlserver

在 R 環境中安裝 RODBC 包

install.packages(“RODBC”, type = “source”)

然後測試連線

> library("RODBC")
> bcp <- odbcConnect("mytest", uid="sa", pwd="1234qwer!")
> bcp

#看到這些資訊
#RODBC Connection 1
#Details:
#  case=nochange
#  DSN=mytest
#  UID=sa
#  PWD=******

# 試一下查詢
lcbd <- sqlQuery(bcp, "SELECT * FROM PERSON")

# 看看得到了什麼?
dim(lcbd)

#> [1] 919  14

OK!!