zoukankan      html  css  js  c++  java
  • R-RMySQL包介绍学习

    参考内容:

    RMySQL数据库编程指南
    R语言使用RMySQL连接及读写Mysql数据库

    RMySql包安装和加载优点问题,试着根据提示简单安装和加载可以使用,后续再查询资料解决。

    3.2.1 连接数据库

    dbConnect(MySQL(),host="localhost",dbname,user="",password="", ...)

    library(RMySql)
    #可能是安装RMySQL的问题,导致直接library(RMySql)提示不存在RMySql包,通过下列方式可以加载成功(又挖一个坑...)
    library("RMySQL", lib.loc="/Library/Frameworks/R.framework/Versions/3.3/Resources/library")
    # Quark
    con <- dbConnect(MySQL(),host="localhost",dbname="Quark",user="root",password="root")
    #获取连接信息,查看database下所有表
    summary(con)  
    dbGetInfo(con)  
    dbListTables(con)
    #断开连接
    dbDisconnect(con)

    3.2.2 写入数据

    dbWriteTable(conn, name, value, row.names=T...)

    • append=T 在数据库中原表的基础上追加

    • overwrite=T 覆盖数据库中的原表

    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=T)
    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")
    
    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,overwrite=T,row.names=F)
    dbReadTable(con,"fruits")

    3.2.3 读取数据

    向数据库提交查询,并返回结果。

    • dbReadTable(conn, name, ...) 直接获得所读取表的全部数据

    • dbGetQuery(conn, statement, ...) 通过sql语句查询数据

    #读数据库
    #解决中文乱码问题
    #dbSendQuery(con,'SET NAMES uft8')
    dbReadTable(con,"test")
    
    #用SQL语句查询dbGetQuery()和dbSendQuery()两种方法  
    dbGetQuery(con, "SELECT * FROM test limit 3")     
    res <- dbSendQuery(con, "SELECT * FROM test")  
    data <- dbFetch(res, n=2) #取前2条数据,n=-1时是获取所有数据  
    data  
    data <- dbFetch(res, n=-1) #取余下所有数据  
    data  
    dbClearResult(res)

    用SQL语句批量查询,client.flag设置这样支持批量查询

    con <- dbConnect(MySQL(),host="localhost",dbname="Quark",user="root",password="root",client.flag= CLIENT_MULTI_STATEMENTS) 
    #client.flag设置这样支持批量查询
    #dbSendQuery(con,'SET NAMES uft-8')
    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)

    3.2.3 删除表

    dbRemoveTable(con,"test")
  • 相关阅读:
    单例模式
    HashSet、LinkedHashSet、SortedSet、TreeSet
    ArrayList、LinkedList、CopyOnWriteArrayList
    HashMap、Hashtable、LinkedHashMap
    andrew ng machine learning week8 非监督学习
    andrew ng machine learning week7 支持向量机
    andrew ng machine learning week6 机器学习算法理论
    andrew ng machine learning week5 神经网络
    andrew ng machine learning week4 神经网络
    vue组件监听属性变化watch方法报[Vue warn]: Method "watch" has type "object" in the component definition. Did you reference the function correctly?
  • 原文地址:https://www.cnblogs.com/nxld/p/6092278.html
Copyright © 2011-2022 走看看