楼主: AlexYoung757
2427 9

[学习分享] 总结R连接各种数据库的方法以及出现的问题 [推广有奖]

  • 1关注
  • 4粉丝

已卖:149份资源

硕士生

82%

还不是VIP/贵宾

-

威望
0
论坛币
587 个
通用积分
1.0302
学术水平
2 点
热心指数
8 点
信用等级
1 点
经验
4529 点
帖子
156
精华
0
在线时间
222 小时
注册时间
2015-4-6
最后登录
2025-9-29

楼主
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 09:06:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家在使用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驱动可以下载安装,配置方法类似。
二维码

扫码加我 拉你入群

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

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

关键词:数据库 Description Microsoft SqlServer database

沙发
钱学森64 发表于 2017-9-4 09:16:52
谢谢分享

藤椅
Tony_Liu 在职认证  发表于 2017-9-4 09:21:38
学习学习 谢谢

板凳
420948492 发表于 2017-9-4 12:19:00
谢谢分享,WINDOWS项下有总结吗

报纸
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:06
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

地板
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:13
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

7
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:24
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

8
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:26
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

9
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:32
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

10
AlexYoung757 在职认证  学生认证  发表于 2017-9-4 15:21:33
420948492 发表于 2017-9-4 12:19
谢谢分享,WINDOWS项下有总结吗
windows下方法应该差别不是太大

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 18:55