#2 R语言-连接MySQL数据库方法#####
2.1 方法1:使用R数据库接口连接数据库####
#使用RMySQL包
install.packages('RMySQL')
library(RMySQL)
#有两种方式操作
#2.1.1 使用dbConnect####
conn <- dbConnect(MySQL(),
dbname = "smartbi_data",
username="etl",
password="etl20160530",
host="localhost", port=9090) #使用跳板机打了隧道host及端口均要修改
daily_record<-dbReadTable(conn, "daily_record")
View(daily_record)
str(daily_record)
#数据操作方法:
dbWriteTable(conn, "tablename", data) #写表
dbReadTable(conn, "tablename") #读表
dbDisconnect(conn) #关闭连接
#2.1.2 使用sqldf包####
library(sqldf)
sqldf("select * from daily_record",dbname="smartbi_data",drv="MySQL",user="etl",password="etl20160530",host="10.66.1.75",port=8096)
但是失败了?没连接上?为啥报错?
#2.2 方法2:使用ODBC连接连接数据库####
#a下载mysql-connector-odbc时电脑是64位的要下载64位的。通常 64 位的系统,可以运行 64/ 32 位应用程序。但是 32 位的系统,并不总是能正常运行 64 位的程序(我之前就是下载32位的),报了个驱动用不了的错。
#[ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
#解决办法:重新下载驱动程序,默认安装,会把odbc驱动换成64位,就好了
#b使用ODBC连接数据库报错:
#在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配" 问题总结
#原来是系统是64位的原因。。。
#64位电脑系统中,在程序连接ODBC数据源出现此错误提示时,
#检查配置ODBC数据源时是用的“C:\Windows\SysWOW64\odbcad32.exe“还是用的“C:\Windows\System32\odbcad32.exe”,前者是32位的,后者是64位的,如果用一个不行,就用另外一个试试。
#最好直接用 管理工具-odbc数据源64位(电脑是64位)
#参考文章https://blog.csdn.net/hongweigg/article/details/49779943
------------------------------------------------------------
#2.2.1设置用户DSN,连接数据库
#配置好驱动,在用户DSN 下面配置数据源
#配置方式跟navicat连接数据库一样(打隧道注意更换端口号)
#注意:连接的数据库字符集为utf8时,在设置用户DSN时,可设置字符集(details-conection-character set)为gbk或者GB2312
library(RODBC)
channel<-odbcConnect(dsn="wuliangye", #输入用户数据源名称
uid="wuliangye", #用户名
pwd="wuliangye_20180723_0930" #密码
)
sqlTables(channel);#查看数据中的表
t2 <- sqlQuery(channel,"select * from history_track limit 10")
View(t2)
#或者存成数据表查看:
channel<-odbcConnect("wuliangye", uid="wuliangye", pwd="wuliangye_20180723_0930")
data<-sqlFetch(channel,"history_track_copy")
View(data)
-----------------------------
#或者 连接的数据库字符集为utf8时,在设置用户DSN时,可设置字符集utf8同时使用DBMSencoding参数
#2.2.2连接数据库进行查询: P39
library(RODBC)
channel<-odbcConnect("wuliangye", uid="wuliangye", pwd="wuliangye_20180723_0930",
DBMSencoding="utf8")#使用参数DBMSencoding='utf8'时dsn配置Character Set参数也要选utf8
sqlTables(channel);#查看数据中的表
t2 <- sqlQuery(channel,"select * from history_track limit 10")
View(t2)