• R语言使用RMySQL连接及读写Mysql数据库 测试通过


    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
     
     print?在CODE上查看代码片派生到我的代码片
    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
     
     print?在CODE上查看代码片派生到我的代码片
    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
     
     print?在CODE上查看代码片派生到我的代码片
    1. #读数据库  
    2. dbReadTable(con,"fruits")#中文出现乱码,这是因为字符编码格式不统一的问题  
    3. dbSendQuery(con,'SET NAMES utf8')    #修正,原为:dbSendQuery(con,'SET NAMES uft8')  

    dbReadTable(con,"fruits")#没有乱码问题了

    
    

    dbSendQuery(con,'SET NAMES uft8')这个设置一老会提示错误,可能会需要多试几次才行,不知道为什么。

    注意:应为:dbSendQuery(con,'SET NAMES utf8')

    
    
    

    [plain] view plain copy
     
     print?在CODE上查看代码片派生到我的代码片
    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
     
     print?在CODE上查看代码片派生到我的代码片
    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
     
     print?在CODE上查看代码片派生到我的代码片
    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 uft-8')  
    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数据库编程指南

  • 相关阅读:
    初识网络编程
    实参和形参
    函数的组成部分及函数参数
    字符编码与文件操作2
    day07
    day06
    day05
    day03
    drf规范
    JQ
  • 原文地址:https://www.cnblogs.com/awishfullyway/p/6655680.html
Copyright © 2020-2023  润新知