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.      安装mysql服务器端

     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操作数据库

    [plain] view plain copy
     
    1. library(RMySQL)  
    2. help(package=”RMySQL”) #查看RMySQL的说明文档,里面有RMySQL所有可用的方法  
    3. #创建数据库连接  
    4. con <- dbConnect(MySQL(),host="host",dbname="test_dw",user="user",password="password")  
    5. #获取连接信息,查看database下所有表,以及删除testname表  
    6. summary(con)  
    7. dbGetInfo(con)  
    8. dbListTables(con)  
    9. dbRemoveTable(con,"test")  

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

    [plain] view plain copy
     
    1. #读数据库  
    2. dbReadTable(con,"fruits")#中文出现乱码,这是因为字符编码格式不统一的问题  
    3. dbSendQuery(con,'SET NAMES uftf8')  
    4. dbReadTable(con,"fruits")#没有乱码问题了  

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

    [plain] view plain copy
     
    1. #用SQL语句查询dbGetQuery()和dbSendQuery()两种方法  
    2. dbGetQuery(con, "SELECT * FROM fruits limit 3")  
    3.    
    4. res <- dbSendQuery(con, "SELECT *FROM fruits")  
    5. data <- dbFetch(res, n=2) #取前2条数据,n=-1时是获取所有数据  
    6. data  
    7. data <- dbFetch(res, n=-1) #取余下所有数据  
    8. data  
    9. dbClearResult(res)  
    10. dbDisconnect(con) #断开连接  

    [plain] view plain copy
     
    1. #用SQL语句批量查询  
    2. con <- dbConnect(MySQL(),host="host",dbname="test_dw",user="user",password="password",client.flag= CLIENT_MULTI_STATEMENTS) #client.flag设置这样支持批量查询  
    3. dbSendQuery(con,'SET NAMES utf8')  
    4. sql <- "SELECT * FROM fruits;SELECT * FROM test"  
    5. res1 <- dbSendQuery(con,sql)  
    6. dbFetch(res1, n = -1)  
    7. if (dbMoreResults(con)) {  
    8.   res2 <- dbNextResult(con)  
    9.   dbFetch(res2, n = -1)  
    10. }  
    11. dbListResults(con)  
    12. dbClearResult(res1)  
    13. dbClearResult(res2)  
    14.    
    15. dbDisconnect(con)  

    参考:RMySQL数据库编程指南

    有任何问题或建议欢迎提出!

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

     
     
  • 相关阅读:
    使用TortoiseGit从GitHub下拉上传代码配置
    Git 安装和使用教程(转载)
    C++的STL之map自动排序特性
    C语言实现随机生成0~100的数
    C语言实现随机生成0或1
    和 区别
    C语言文件操作函数
    php的缓冲/缓存 js对象 ,php编程的深入思考-1
    apache安装时的一些术语
    在linux下手动安装 apache, php, mysql--终极版
  • 原文地址:https://www.cnblogs.com/awishfullyway/p/6668419.html
Copyright © 2011-2022 走看看