RODBC连接MySQL使用总结-细节梳理

5 篇文章 0 订阅

2018-11-18更新

ODBC即开放数据库连接,open database connectivity,提供一组对数据库访问的标准API

安装MySQL-odbc数据源,32位可直接安装(没有依赖项),64位需要先安装vc_redist.x64文件。安装文件列表如下:

mysql-connector-odbc-5.2.7-win32

mysql-connector-odbc-8.0.13-winx64.msi

vc_redist.x64.exe

设置odbc connection character set utf-8,这样读MySQL数据库中的中文数据时,显示正常

library("RODBC")
#DBMSencoding-命名DBMS返回的编码字符串(默认值是R语言环境编码),返回handle
con=odbcConnect("mysqlodbc64",uid="root",pwd="**********",DBMSencoding="utf8",case="nochange")
odbcGetInfo(con)	#ODBC连接信息(客户端+服务器的细节信息)


#将SQL查询提交ODBC数据库,返回检索结果
#query-任意有效的SQL语句
sqlQuery(con,query,errors=TRUE,...,rows_at_time)


#写入表
sqlSave(channel, dat, tablename = NULL, append = FALSE, rownames = TRUE, colnames = FALSE, verbose = FALSE, safer = TRUE, addPK = FALSE, typeInfo, varTypes, fast = TRUE, test = FALSE, nastring = NULL)
#更新已存在行的表(用的比较少,主要通过索引列-匹配确定要更新的行)
sqlUpdate(channel, dat, tablename = NULL, index = NULL, verbose = FALSE, test = FALSE, nastring = NULL, fast = TRUE)
#dat-a data frame
 tablename-character,数据库表名如果缺失则使用dat名称
 index-character,要使用的索引列名称
 append-数据是否应追加到现有表
 verbose-是否输出log信息(可判断error位置)
 rownames-逻辑值(是否将R中数据框的行名称保存为数据库中表的第一列)或字符(一个给出所需列名的字符串,即命名第一列)
 colnames-逻辑值,是否将列名保存为表的第一行
 addPK-逻辑值,是否将rownames指定为主键(若存在)
#组合索引列
sqlUpdate(con, writedata, tablename ="表名",index=c("ORG_NEW_ID","YEAR_MONTH"))


#sqlTables(),在ODBC连接上列出表
sqlTables(con)
sqlFetch(con,sqtable="表名",colnames=FALSE,rownames=FALSE)


sqlClear(channel, sqtable, errors = TRUE)	#删除表所有行
sqlDrop(channel, sqtable, errors = TRUE)	#删除表


#关闭连接
odbcClose(con)

当使用RODBC的sqlSave将data.frame插入MySQL数据库中出现

Error in odbcUpdate(channel, query, mydata, coldata[m, ], test = test,  : 
missing columns in 'data'
设置sqlSave的fast=FALSE

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值