用R语言做数据分析时,常常需要从多种数据源取数据,其中数据库是非常常见的数据源。RMySQL包,可以在R语言中对Mysql数据库进行增删改查的操作。
安装:
install.packages(‘RMySQL’,type=‘source’)
报错:
fatal error: mysql.h: No such file or directory
linux CentOS解决方式
报错上面提示:没有发现依赖包需要安装
环境下安装:
rpm: mariadb-devel | mysql-devel
sudo yum install mariadb-devel
sudo yum install mysql-devel
然后运行install.packages(‘RMySQL’)安装成功
docker安装:
apt update //只检查,不更新(已安装的软件包是否有可用的更新,给出汇总报告)
apt upgrade //更新已安装的软件包
apt install mysql-server
//vim: command not found
apt-get install vim
apt-get install mariadb-devel
apt-get install libmysqlclient-dev
使用
summary(con) #获取连接信息
dbGetInfo(con) #获取连接信息
dbListTables(con) #查看database下所有表格
dbRemoveTable(con, “test”) #删除名为test的表
用dbConnect函数创建连接,驱动类型设置为MySQL(),用户名user、密码password、主机host、端口port、数据库dbname这些参数需要根据实际情况修改,其中端口port默认值是3306。
RMySQL基本操作
创造一个新的数据库并使用,SQL查询可以通过dbSendQuery或dbGetQuery传给数据库管理系统。dbGetQuery传送查询语句,把结果以数据框形式返回。dbSendQuery传送查询,返回的结果是继承"DBIResult"的一个子类的对象。函数fetch用于获得查询结果的部分或全部行,并以列表返回。函数dbHasCompleted确定是否所有行已经获得了,而dbGetRowCount返回结果中行的数目。如果只是简单的读整个表,也可以用dbReadTable函数。
3种方法在数据库中创造表:
dbCreateTable函数创建表:
注意点:
设置fields参数时,用命名的字符向量(名字为字段名,值为字段数据类型)或数据框表示
表只能创建一次,重复创建会报错。
3.sql语句创建表
运行dbSendQuery函数,调用sql语句创建表,该函数返回一个RMySQLResult类。该方法可以重复运行,不会报错。
显示数据库中的表:
写数据库表:
dbWriteTable函数写入表
注意点:
第一次写入时,若数据库中无该表,会根据表名自动创建
重复写入时,需要设置写入行为:
append和overwrite两个参数不能同时设置为TRUE。
sql语句插入数据:
运行dbSendStatment函数,调用sql语句插入数据。
注意点:
重复运行会重复插入数据
读数据库:
dbReadTable函数读取表:
注意点:
返回的是整个表的数据
为解决中文显示问题,若运行R的操作系统为window,需要设置编码为gbk,为Linux则需要设置为utf8
返回的数据格式为data.frame
sql语句读取表:
通过运行dbGetQuery或dbSendQuery函数,调用sql语句读取表。
dbGetQuery函数运行sql语句,返回data.frame。可以在sql语句中编写筛选语句。
dbSendQuery函数运行sql语句,返回MySQLResult类。对该类使用dbFetch函数,可以筛选行,返回data.frame。用完后需要用dbClearResult函数清理结果。
删除表
用dbRemoveTable函数删除表。
完成所有的操作后,需要关闭连接。