全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2384 9
2017-09-04
大家在使用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驱动可以下载安装,配置方法类似。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-9-4 09:16:52
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-9-4 09:21:38
学习学习 谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-9-4 12:19:00
谢谢分享,WINDOWS项下有总结吗

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-9-4 15:21:06
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-9-4 15:21:13
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群