zoukankan      html  css  js  c++  java
  • R语言使用RMySQL连接及读写Mysql数据库

    简单说下安装过程,一般不会有问题,重点是RMySQL的使用方式。

    系统环境说明

    Redhat系统:Linux 460-42.6.32-431.29.2.el6.x86_64

    系统编码:LANG=zh_CN.UTF-8(中文UTF-8格式)

    mysql版本号:mysql  Ver 14.14 Distrib 5.1.73, forredhat-linux-gnu (x86_64) using readline 5.1



    安装mysql

    1.      查看是否安装

    yum list installed mysql*

    2.      查看现有安装包

     yumlist mysql*

    3.      安装mysqlserver端

     yuminstall mysql-devel

     yuminstall mysql-server

    4.      设置mysql默认字符和引擎

     vim/etc/my.cnf

    在[mysqld]下加入

     default-character-set=utf8

     default-storage-engine=INNODB

    5.      mysql启动和关闭

    /etc/init.d/mysqld start

    /etc/init.d/mysqld stop

    6.      设置开机mysql启动

    /sbin/chkconfig - - list

    /sbin/chkconfig add mysqld

    /sbin/chkconfig mysqld on

    參考:redhat下mysql安装与使用


    安装RMySQL

    install.packages(“RMySQL”)


    使用RMySQL操作数据库

    library(RMySQL)
    help(package=”RMySQL”) #查看RMySQL的说明文档,里面有RMySQL全部可用的方法
    #创建数据库连接
    con <- dbConnect(MySQL(),host="host",dbname="test_dw",user="user",password="password")
    #获取连接信息。查看database下全部表,以及删除testname表
    summary(con)
    dbGetInfo(con)
    dbListTables(con)
    dbRemoveTable(con,"test")


    #写数据库表
    fruits <-data.frame(id=1:5,name=c("苹果","香蕉","梨子","玉米","西瓜"),price=c(8.8,4.98,7.8,6,2.1),status=c("无","打折","无","售罄","批发"))
    dbListTables(con)
    dbWriteTable(con,"fruits",fruits)
    dbListTables(con)

    #读数据库
    dbReadTable(con,"fruits")#中文出现乱码,这是由于字符编码格式不统一的问题
    dbSendQuery(con,'SET NAMES uftf8')
    dbReadTable(con,"fruits")#没有乱码问题了




    #写数据表,覆盖追加
    testA <-data.frame(id=1:6,e=c("a","b","c","d","e","f"),c=c("我","的","世","界","变","得"))
    testB <-data.frame(id=7:13,e=c("g","h","i","j","k","l","m"),c=c("奇","妙","跟","难","以","言","喻"))
    #直接写testA写入test表中
    dbWriteTable(con,"test",testA,row.names=F)
    dbReadTable(con,"test")
    #追加写testB追加在test表后
    dbWriteTable(con,"test",testB,append=T,row.names=F)
    dbReadTable(con,"test")
    #覆盖写testB覆盖test表
    dbWriteTable(con,"test",testB,overwrite=T,row.names=F)
    dbReadTable(con,"test")

    #用SQL语句查询dbGetQuery()和dbSendQuery()两种方法
    dbGetQuery(con, "SELECT * FROM fruits limit 3")
     
    res <- dbSendQuery(con, "SELECT *FROM fruits")
    data <- dbFetch(res, n=2) #取前2条数据。n=-1时是获取全部数据
    data
    data <- dbFetch(res, n=-1) #取余下全部数据
    data
    dbClearResult(res)
    dbDisconnect(con) #断开连接

    #用SQL语句批量查询
    con <- dbConnect(MySQL(),host="host",dbname="test_dw",user="user",password="password",client.flag= CLIENT_MULTI_STATEMENTS) #client.flag设置这样支持批量查询
    dbSendQuery(con,'SET NAMES utf8')
    sql <- "SELECT * FROM fruits;SELECT * FROM test"
    res1 <- dbSendQuery(con,sql)
    dbFetch(res1, n = -1)
    if (dbMoreResults(con)) {
      res2 <- dbNextResult(con)
      dbFetch(res2, n = -1)
    }
    dbListResults(con)
    dbClearResult(res1)
    dbClearResult(res2)
     
    dbDisconnect(con)

    參考:RMySQL数据库编程指南


    有不论什么问题或建议欢迎提出!

    转载请务必注明来源,谢谢!

  • 相关阅读:
    oracle 触发器的编写
    单例类与常见双下方法
    实现高效率的冒泡排序
    面向对象基础(五)
    面向对象基础(四)
    面向对象基础(三)
    面向对象基础(二)
    面向对象(基础)
    四指针法
    因数法
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6859681.html
Copyright © 2011-2022 走看看