zoukankan      html  css  js  c++  java
  • R语言—连接Oracle数据库

    本教程会讲解两种方法,第一种方法较为简单,且中文不容易出现乱码。第二种方法,较为复杂,和java的jdbc连接数据库操作类似。

    操作环境:

        • 系统:windows10 64位
        • 数据库:Oracle11g  用户名:testuser  
        • 案例用表:emp
        • R语言版本:3.4.0  64位
        • RStudio版本:1.0.143

    方法一(推荐):

    1.设置"ODBC数据源(64位)"

    图1:控制面板>管理工具>ODBC数据源(64位)

    图2:有些设置,自己要记得,红字中的代码会用到。

     

    2.代码部分

    > library(RODBC)  ##加载RODBC包,没有成功的请先下载安装install.packages("RODBC")
    > con<-odbcConnect("oracle",uid="testuser",pwd="testuser",believeNRows=FALSE) ##建立Oracle连接
    > emp1<-sqlQuery(con,"select * from EMP") ##sqlQuery可带查询语句
    > sqlFetch(con,'EMP')  ##sqlFetch可根据表名,获取Oracle中的表(注意,这里表名在单引号中,双引号会报错) 
    > odbcClose(con) ##关闭连接 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
    1 7369 SMITH CLERK 7902 1980-12-17 800 NA 20 2 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30 3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
    ····

    方法一结束!!!

    方法二:

    1.将驱动"ojdbc6_g.jar"放到R的工作空间中,不知道R工作空间的可以通过在RStudio中输入"getwd()"查看路径。

    图3:"ojdbc6_g.jar"文件在Oracle11g的目录中能找到,无需下载

    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中表的数据
    > head(EMP,3)  ##查看前三行
      EMPNO ENAME      JOB  MGR            HIREDATE  SAL COMM DEPTNO
    1  7369 SMITH    CLERK 7902 1980-12-17 00:00:00  800   NA     20
    2  7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600  300     30
    3  7521  WARD SALESMAN 7698 1981-02-22 00:00:00 1250  500     30
    > head(table1,3) ##查看前三行
      EMPNO ENAME      JOB  MGR            HIREDATE  SAL COMM DEPTNO
    1  7369 SMITH    CLERK 7902 1980-12-17 00:00:00  800   NA     20
    2  7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600  300     30
    3  7521  WARD SALESMAN 7698 1981-02-22 00:00:00 1250  500     30
    > names(table1)=iconv(names(table1),"UTF-8","GBK")  ##若是表中列名为中文,读取时出现乱码,可用这句来搞定乱码情况

    方法二结束!!!

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/dsjxmz/p/6896641.html
Copyright © 2011-2022 走看看