大家在使用R的时候会使用各种方式获取数据源,下面总结下R连接各种数据库的方法
#-------------------------------------------------------------连接SQL SERVER-------------------------------------------------------------------
目录:
•unixODBC安装
•Msodbcsql安装
•ODBC配置
说明:
----------------------------------------------------------------------------------------------------------------------------------------------
•unixODBC提供了Linux对ODBC的支持,但它只是一个ODBC的管理器,要连接实际的数据库还需要提供这种数据库的ODBC驱动
•msodbcsql是Linux下用于连接sqlServer的免费ODBC驱动 (注意:必须先装unixODBC,再安装sqlserverodbc)
1.unixODBC安装:
yum install unixODBC
2.msodbcsql安装
sudo su
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install msodbcsql
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
说明:
如果出现xx.rpm is not signed
解决方法:
vim /etc/yum.repos.d/CentOS-Base.repo
把其中的gpgcheck值改为0
如果还报错
yum加参数--nogpgcheck
odbcinst -q -d -n "ODBC Driver 13 for SQL Server" (测试安装是否成功,如下则ok)
Description = Microsoft ODBC Driver 13 for SQL Server
Driver = /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.0
UsageCount = 1
3.ODBC配置
•安装成功后,在/etc目录下能找着odbcinst.ini和odbc.ini 文件
•odbcinst.ini 表示本机已经安装了哪些类型的驱动,正确安装后内容如下
Description = Microsoft ODBC Driver 13 for SQL Server
Driver = /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.0
UsageCount = 1
命令:vim /etc/odbc.ini (配置MS sqlserver 连接信息),在打开的文件中输入如下内容
Driver = /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.0
Server = 数据库服务器名或IP
Database = 数据库名
4.RODBC安装
library(RODBC)
pile <- odbcConnect("testsql",uid = "sa",pwd = "sa@123")
data <- sqlQuery(pile,"select *from MOVEMENT_ACTION ")
close(pile)
data
#-------------------------------------------------------------连接Oracle----------------------------------------------------------------------
# 方法一:采用jdbc方法
1.将驱动"ojdbc6_g.jar"放到R的工作空间中,不知道R工作空间的可以通过在RStudio中输入"getwd()"查看路径
2.代码部分:
library(RJDBC) ##加载"RJDBC"包,如果失败了。请安装该包install.packages("RJDBC")
drv <- JDBC("oracle.jdbc.driver.OracleDriver","ojdbc6_g.jar", identifier.quote="\"") ##java中JDBC的套路
conn <- dbConnect(drv,"jdbc:oracle:thin:@127.0.0.1:1521:orcl","testuser","testuser") ##建立一个连接
EMP <- dbReadTable(conn,'EMP') ##根据连接和表名获取Oracle中的表
table1 <- dbGetQuery(conn,"select * from EMP") ##根据sql记录获取Oracle中表的数据
# 方法二:使用ROracle包
### URL
http://blog.csdn.net/lichangzai/article/details/52217333
备用:http://blog.csdn.net/lichangzai/article/details/40304077
1.首先安装unixODBC
yum install unixodbc
2.下载文件:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
3.安装Oracle ODBC
rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm
3.下载ROracle 包
https://cran.r-project.org/web/packages/ROracle/index.html
ROracle_1.2-2.tar.gz
4.设置环境变量
# vi /etc/prfile
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
5.安装ROracle包
R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/12.2/client64/lib --with-oci-inc=/usr/include/oracle/12.2/client64' ROracle_1.3-1.tar.gz
若出现libclntsh.so.12.1: cannot open shared object file: No such file or directory
更改ld.so.conf配置:
1)vi /etc/ld.so.con
2)添加如下配置:
/usr/lib/oracle/12.1/client64/lib
3)ldconfig
# 连接远程Oracle数据库
drv <- dbDriver("Oracle")
conn_str <- "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.5.195)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))"
con <- dbConnect(drv,username = "scott", password = "tiger",dbname = conn_str)
rs <- dbSendQuery(con,"select * from emp where deptno = 10")
data <- fetch(rs)
data
# -------------------------------------------------------------其他数据库----------------------------------------------------------------------------
其他数据库如Mysql 、Postgresql方法类似,其中unixODBC自带有postgresql驱动,mysql驱动可以下载安装,配置方法类似。