【笔记】R 语言使用 JDBC 连接 MySQL 数据库

小白 R 语言使用 JDBC 笔记

前言

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()

  1. 函数 jdbc(驱动,地址) 得到驱动
  2. 函数 dbConnect(驱动,ip地址/数据库名,登录名,登录密码) 得到连接
  3. 函数 dbGetQuery(连接,SQL 查询语句) 进行 SQL 操作
  4. 函数 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值