在我的實際工作中,數據來源一方面是關係型資料庫MS SqlServer, 別一方面是HBase。本節主要介紹通過RODBC訪問MS SqlServer 安裝配置,參見資料(https://msdn.microsoft.com/en-us/library/hh568454(v=sql.110).asp ...
在我的實際工作中,數據來源一方面是關係型資料庫MS SqlServer, 別一方面是HBase。本節主要介紹通過RODBC訪問MS SqlServer 安裝配置,參見資料(https://msdn.microsoft.com/en-us/library/hh568454(v=sql.110).aspx),請註意:下載的msodbc 的版本與 unixODBC的版本之間有強制的對應關係,參見:(https://msdn.microsoft.com/en-us/library/hh568449(v=sql.110).aspx),本文選擇安裝的是 msodbcsql-11.0.2270.0 ,按官方介紹,對應的unixodbc 版本為:unixODBC-2.3.0
目錄:
- unixODBC安裝
- Msodbcsql安裝
- ODBC配置
- RODBC安裝
- RODBC調用示例
說明:
- unixODBC提供了Linux對ODBC的支持,但它只是一個ODBC的管理器,要連接實際的資料庫還需要提供這種資料庫的ODBC驅動
- msodbcsql是Linux下用於連接sqlServer的免費ODBC驅動 (註意: 必須先裝unixODBC,再安裝sqlserverodbc)
- RODBC是R腳本連接ODBC的軟體包
unixODBC安裝:
- 軟體安裝包下載(unixODBC-2.3.0.tar.gz),下載地址:https://sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/
- 命令:yum remove unixODBC (如果機器上已經安裝其它版本的unixODBC,安裝前需要先將其刪除)
- 命令:tar xvzf unixODBC-2.3.0.tar.gz (將下載到本地的軟體包上傳至linux主機並解壓)
- 命令:cd unixODBC-2.3.0 (切換至解壓後的目錄)
- 命令:CPPFLAGS="-DSIZEOF_LONG_INT=8"
- 命令:export CPPFLAGS
- 命令:./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE
- 命令:make (編譯安裝)
- 命令:make install
Msodbcsql安裝:
- 軟體安裝包下載(msodbcsql-11.0.2270.0.tar.gz),下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=36437
- 命令:tar xvzf msodbcsql-11.0.2270.0.tar.gz (安裝包上傳到linux 主機後解壓)
- 命令:cd msodbcsql-11.0.2270.0 (切換至解壓後主目錄)
- 命令:./install.sh verify (驗證當前環境是否滿足軟體安裝要求)
- 命令:./install.sh install (上一步ok的前提下,執行安裝)
- 命令:odbcinst -q -d -n "ODBC Driver 11 for SQL Server" (測試安裝是否成功,如下則ok)
Description=Microsoft ODBC Driver 11 for SQL Server Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0 Threading=1 UsageCount=1
-
ODBC配置:
- 安裝成功後,在 /etc 目錄下能找著 odbcinst.ini 和 odbc.ini 文件
- odbcinst.ini 表示本機已經安裝了哪些類型的驅動,正確安裝後內容如下
[ODBC Driver 11 for SQL Server] Description=Microsoft ODBC Driver 11 for SQL Server Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0 Threading=1 UsageCount=1
-
命令:vim /etc/odbc.ini (配置MS sqlserver 連接信息),在打開的文件中輸入如下內容
[testsql] Driver=ODBC Driver 11 for SQL Server Server= 資料庫伺服器名或IP Database=資料庫名
-
註意:Driver 賦值必須與 odbcinst 文件中 安全一致
- 命令:isql testsql sa XXXX (testsql: 設置的odbc連接名,後面以空格輸入用戶名和密碼,成功連接則OK,如圖)
- 命令: quit (退出)
RODBC安裝:
- 命令:R (進入R命令行)
- 執行:install.packages("RODBC") (安裝RODBC)
- 安裝完成後,在R命令行下執行如下腳本,結果如下則OK
library(RODBC) pile <- odbcConnect("testsql",uid = "sa",pwd = "yourPassword") data <- sqlQuery(pile,"select top 5 code,name from codeItems") close(pile) data
- 結果如下,則ok