實驗環境:win8.1-64操作系統,MySQL5.6
1、下載(mysql-connector-odbc-5.3.4-winx64.msi)
下載地址:http://dev.mysql.com/downloads/connector/odbc
2、安裝mysql-connector-odbc-5.3.4-winx64.msi(安裝按照默認就好了)
3、配置datasource
windows:控制面板
- data source name 一項填入你要使用的名字,自己隨便命名,例如:MySQL;
- description一項隨意填寫,例如MyWorld;
- TCP/IP Server 填寫本機服務器IP,一般爲:127.0.0.1;
- user 填寫你的mysql用戶名;
- password 填寫你的mysql密碼;
- 然後數據庫裏會出現你的mysql裏的所有數據庫(我這裏選world),選擇一個數據庫,OK。
4、使用R連接MySQL
- 連接數據庫
# 加載包RODBC
library(RODBC)
# 連接MySQL數據庫
channel <- odbcConnect("MySQL", uid="root", pwd="root")
- 查看數據world中的表
> 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裏
> 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降序排序
> 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中的數據保存到數據庫的表中
> 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
# 由於數據框沒有行名,所以保存到數據庫中時需要指定一個行名(比如這裏是“id”)
> sqlSave(channel, iris, rownames = "id", addPK = TRUE)
打開cmd進入到mysql,使用語句
use world
show tables;
select * from iris;
- 刪除數據庫中的表iris
sqlDrop(channel,"iris")
- 關閉數據庫的連接
odbcClose(channel)