R语言连接MySQL

实验环境:win8.1-64操作系统,MySQL5.6

1、下载驱动文件
下载地址:http://dev.mysql.com/downloads/connector/odbc


2、安装mysql-connector-odbc-5.3.4-winx64.msi(安装按照默认就好了)


3、配置datasource

windows:控制面板$\Rightarrow$管理工具$\Rightarrow$ODBC 数据源(64 位)$\Rightarrow$添加$\Rightarrow$选中mysql ODBC driver一项

  • data source name 一项填入你要使用的名字,自己随便命名,例如:MySQL;
  • description一项随意填写,例如MyWorld;
  • TCP/IP Server 填写本机服务器IP,一般为:127.0.0.1;
  • user 填写你的mysql用户名;
  • password 填写你的mysql密码;
  • 然后数据库里会出现你的mysql里的所有数据库(我这里选world),选择一个数据库,OK。

这里写图片描述


4、使用R连接MySQL

  • 连接数据库
    1
    2
    3
    4
    5
    # 加载包RODBC
    library(RODBC)

    # 连接MySQL数据库
    channel <- odbcConnect("MySQL", uid="root", pwd="root")

  • 查看数据world中的表
    1
    2
    3
    4
    5
    > sqlTables(channel)
    TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS
    1 world city TABLE
    2 world country TABLE
    3 world countrylanguage TABLE

  • 查看表city的内容,存到数据框data里
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > data<-sqlFetch(channel,"city")
    > head(data)
    ID Name CountryCode District Population
    1 1 Kabul AFG Kabol 1780000
    2 2 Qandahar AFG Qandahar 237500
    3 3 Herat AFG Herat 186800
    4 4 Mazar-e-Sharif AFG Balkh 127800
    5 5 Amsterdam NLD Noord-Holland 731200
    6 6 Rotterdam NLD Zuid-Holland 593321

  • 使用SQL语句查询,查询Population大于等于500万的人名,并按ID降序排序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    > sqlQuery(channel,"select ID,Name,Population from city where Population >= 5000000 order by id desc")
    ID Name Population
    1 3793 New York 8008278
    2 3580 Moscow 8389200
    3 3357 Istanbul 8787958
    4 3320 Bangkok 6320174
    5 2890 Lima 6464693
    6 2823 Lahore 5063499
    7 2822 Karachi 9269265
    8 2515 Ciudad de M??xico 8591309
    9 2331 Seoul 9981619
    10 2298 Kinshasa 5064000
    11 2257 Santaf?? de Bogot?? 6260862
    12 1893 Tianjin 5286800
    13 1892 Chongqing 6351600
    14 1891 Peking 7472000
    15 1890 Shanghai 9696300
    16 1532 Tokyo 7980230
    17 1380 Teheran 6758845
    18 1025 Delhi 7206704
    19 1024 Mumbai (Bombay) 10500000
    20 939 Jakarta 9604900
    21 608 Cairo 6789479
    22 456 London 7285000
    23 207 Rio de Janeiro 5598953
    24 206 S??o Paulo 9968485

  • 将数据框iris中的数据保存到数据库的表中
1
2
3
4
5
6
7
8
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
1
2
# 由于数据框没有行名,所以保存到数据库中时需要指定一个行名(比如这里是“id”)
> sqlSave(channel, iris, rownames = "id", addPK = TRUE)

打开cmd进入到mysql,使用语句

1
2
use world
show tables;

这里写图片描述

1
select * from iris;

这里写图片描述


  • 删除数据库中的表iris
1
sqlDrop(channel,"iris")

这里写图片描述


  • 关闭数据库的连接
1
odbcClose(channel)
文章目录
,