小白 R 语言使用 JDBC 笔记
R 语言使用 JDBC 连接 MySQL 数据库
前言
R 语言连接数据库有两种方法:
- 使用 RMySQL
- 使用 JDBC。
如果使用 R 语言连接 hive、impala 等,使用 JDBC 会更方便。
熟悉 R 语言使用 JDBC 连接数据库的流程
1 加载 RJDBC
library(RJDBC)
如果没有安装的话需要安装一下
install.packages("RJDBC",dep = TRUE, type = "source", repos = "https://mirrors.ustc.edu.cn/CRAN/")
2 连接方式: jdbc()
dbConnect()
dbGetQuery()
dbDisconnect()
- 函数 jdbc(驱动,地址) 得到驱动
- 函数 dbConnect(驱动,ip地址/数据库名,登录名,登录密码) 得到连接
- 函数 dbGetQuery(连接,SQL 查询语句) 进行 SQL 操作
- 函数 dbDisconnect(连接) 关闭连接
准备驱动工具
驱动工具是指上文中 jdbc(驱动, 地址)
中的驱动,比如我们连接 hive 的话会用到的驱动工具是 org.apache.hive.jdbc.HiveDriver
, 一般会把相应的 jar 包放在第二个参数「地址」里面,因为我们使用驱动 jar 的时候,驱动 jar 也会依赖各种 jar ,这个时候就需要我们把所依赖的每一个 jar 都放在「地址」里面,为了保证不缺少 jar 包,我新建了一个 maven 项目,把所依赖的库用 maven 管理好,然后打包成一个 jar 就可以了。
在 maven 的依赖中加入
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.1.0</version>
</dependency>
然后再使用下面插件打包 jar
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
然后执行 mvn clean compile assembly:single
就可以一个 jar 包,里面包括你所需要的依赖。
下面把 jar 包放在「地址」里面就可以。
在 R 项目中使用 jar 包
#! /usr/bin/env Rscript
# install.packages("RJDBC", dep = TRUE)
# install.packages("rJava", type = "source", repos = "https://mirrors.ustc.edu.cn/CRAN/")
# install.packages("DBI", type = "source", repos = "https://mirrors.ustc.edu.cn/CRAN/")
# install.packages("RJDBC",dep = TRUE, type = "source", repos = "https://mirrors.ustc.edu.cn/CRAN/")
library('rJava')
library('DBI')
library('RJDBC')
drv <- JDBC('org.apache.hive.jdbc.HiveDriver', Sys.glob("./libs/*.jar"))
conn <- dbConnect(drv, sprintf('jdbc url'), '用户名', '密码')
dbGetQuery(conn, "SQL 语句")
dbDisconnect(conn)