r导入数据到mysql_把R里面的数据导入到mysql数据库的两种方式

1、包 DBI 和 RMySQL

dbReadTable 和 dbWriteTable实现一个 R 数据框的复制进和复制出数据库,把数据框的行名字映射到 MySQL 表的row_names 字段。

> library(RMySQL) # will load DBI as well

## 打开一个MySQL数据库的连接

> con dbListTables(con)

## 把一个数据框导入到数据库,删除任何已经存在的拷贝

> data(USArrests)

> dbWriteTable(con, "arrests", USArrests, overwrite = TRUE)

TRUE

> dbListTables(con)

[1] "arrests"

## 获得整个表

> dbReadTable(con, "arrests")

Murder Assault UrbanPop Rape

Alabama 13.2 236 58 21.2

Alaska 10.0 263 48 44.5

Arizona 8.1 294 80 31.0

Arkansas 8.8 190 50 19.5

...

## 从导入的表中查询

> dbGetQuery(con, paste("select row_names, Murder from arrests",

"where Rape > 30 order by Murder"))

row_names Murder

1 Colorado 7.9

2 Arizona 8.1

3 California 9.0

4 Alaska 10.0

5 New Mexico 11.4

6 Michigan 12.1

7 Nevada 12.2

8 Florida 15.4

> dbRemoveTable(con, "arrests")

> dbDisconnect(con)

2 包 RODBC

这里是用PostgreSQL的一个例子,其中ODBC 驱动把列和数据框的名字映射成小写。我们用一个事先创建的数据库testdb,还有一个个设置在unixODBC下文件 ~/.odbc.ini的数据源名字(Data Source Name,DSN)。同样的代码在MyODBC访问Linux或Windows上的MySQL数据库时一样有效(其中,MySQL依然会把名字映射成小写)。在 Windows,DSN在控制面板的 ODBC 工具里面设置(在Windows 2000/XP,设置`管理工具'部分的`数据源(ODBC)')。

> library(RODBC)

## 让函数把名字映射成小写

> channel data(USArrests)

> sqlSave(channel, USArrests, rownames = "state", addPK = TRUE)

> rm(USArrests)

## 列出数据库的表

> sqlTables(channel)

TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS

1 usarrests TABLE

## 列出表格

> sqlFetch(channel, "USArrests", rownames = "state")

murder assault urbanpop rape

Alabama 13.2 236 58 21.2

Alaska 10.0 263 48 44.5

...

## SQL查询,原先是在一行的

> sqlQuery(channel, "select state, murder from USArrests

where rape > 30 order by murder")

state murder

1 Colorado 7.9

2 Arizona 8.1

3 California 9.0

4 Alaska 10.0

5 New Mexico 11.4

6 Michigan 12.1

7 Nevada 12.2

8 Florida 15.4

## 删除表

> sqlDrop(channel, "USArrests")

## 关闭连接

> odbcClose(channel)

作为 Windows下面用 ODBC 连接 Excel电子表格的一个简单例子,我们可以如下读取电子表格

> library(RODBC)

> channel sqlTables(channel)

TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS

1 C:\\bdr NA Sheet1$ SYSTEM TABLE NA

2 C:\\bdr NA Sheet2$ SYSTEM TABLE NA

3 C:\\bdr NA Sheet3$ SYSTEM TABLE NA

4 C:\\bdr NA Sheet1$Print_Area TABLE NA

## 获得表单1的内容,可以用下面任何一种方式

> sh1 sh1 注意,数据库表的规范和

sqlTables 返回的名字是不一样的:

sqlFetch 可以映射这种差异。

详见 :http://www.biosino.org/R/R-doc/onepage/R-data_cn.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值