终于解决了R连接MySQL数据库的问题!

终于解决了R连接MySQL数据库的问题!

本文R脚本:R数据库导入MySQL.R
最开始接触MySQL的时候就尝试过使用R连接MySQL,但是一直没有成功,主要是没能实现直接将数据框写入MySQL,dbWriteTable()函数在我的电脑上不好使,所以我不得不直接使用MySQL语句写入数据。

先修改一下我的MySQL的登陆密码

之前的那个密码比较敏感,所以不能随便公开,所以得改一个随意的。
打开终端输入:

1
2
3
4
5
mysql -u root -p
-- 会提示输入密码,输入之前的老密码即可
-- 修改密码为‘12345’
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
-- Ctrl+D退出MySQL再重新登陆,密码设置成功

创建连接

1
2
3
library(RMySQL)
library(messyr)
engine = dbConnect(RMySQL::MySQL(), dbname = '交易数据', username = 'root', password = '12345', host = 'localhost', port = 3306)

上面的交易数据是我的一个数据库。里面存放在一些之前扔进去的数据集。

查看所选数据库里面的数据

1
2
3
4
5
6
7
8
9
10
11
dbListTables(engine)
[1] "000001大单交易数据" "002337前复权数据"
[3] "002337后复权数据" "600848-15K"
[5] "600848-30K" "600848-5K"
[7] "600848-60K" "600848分笔数据"
[9] "600848周K" "600848日K"
[11] "600848月K" "601333当日分笔数据"
[13] "个股信息" "全部个股当日数据"
[15] "沪深300指数10月份日线行情" "浦发银行5分钟行情"
[17] "浦发银行前复权日线行情" "浦发银行后复权周线行情"
[19] "隔夜SHIBOR" "鹏华银行分级B的60分钟行情"

从数据库中读取数据存储为数据框

1
ir = dbReadTable(engine, "002337前复权数据")

创建一个数据框

ibor()函数默认下载的是隔夜SHIBOR的数据。

1
df = ibor()

将数据框插入MySQL数据库

因为dbWriteTable()函数在我的电脑上总是出错,所以我不得不使用MySQL语句插入表格:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 需要把日期加上单引号才能写入为日期格式
df$日期 = paste0('\'', df$日期,'\'')
# 设置变量名称的编码格式
dbSendQuery(engine,'SET NAMES utf8')
# 删除已有表格
dbSendQuery(engine, "drop table 隔夜SHIBOR")
# 创建表格
dbSendQuery(engine, "CREATE TABLE 隔夜SHIBOR(
日期 DATE,
`利率(%)` DOUBLE,
`涨跌幅(BP)` DOUBLE
)")
# 插入数据
strSQL <- paste(
'insert into 隔夜SHIBOR(`日期`, `利率(%)`, `涨跌幅(BP)`) values',
paste(sprintf("(%s,'%f', %f )", df$日期, df$`利率(%)`, df$`涨跌幅(BP)`), collapse=', '),
sep = ' '
)
dbSendQuery(engine, strSQL)

关闭连接

1
dbDisconnect(engine)

插入效果

创建拆借利率数据库

既然已经解决了这个问题,那么下一步就是赶紧把拆借利率数据存到数据库里面方便调用啦!
首先我写了个函数方便重复执行存入数据库的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
rm(list = ls())
library(RMySQL)
library(messyr)
engine = dbConnect(RMySQL::MySQL(), dbname = '拆借利率', username = 'root', password = '12345', host = 'localhost', port = 3306)
iborpro_mysql <- function(iterm = "SHIBOR-CNY-ON", name = "隔夜SHIBOR"){
df = iborpro(iterm = iterm)
df$日期 = paste0('\'', df$日期,'\'')
sql2 <- paste0(
"CREATE TABLE ",
name,
"(日期 DATE,
`利率(%)` DOUBLE,
`涨跌幅(BP)` DOUBLE
)", sep = ' '
)
dbSendQuery(engine, sql2)
sql3 <- paste0(
"insert into ", name, "(`日期`, `利率(%)`, `涨跌幅(BP)`) values",
paste(sprintf("(%s,'%f', %f )", df$日期, df$`利率(%)`, df$`涨跌幅(BP)`), collapse=', ')
)
dbSendQuery(engine, sql3)
}

然后把下面的这些繁复的代码运行一遍,数据库就装满啦!实际上我现在一直在担心东方财富网把我的IP封了。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
iborpro_mysql('SHIBOR-CNY-ON', '`ON上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-1W', '`1W上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-2W', '`2W上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-1M', '`1M上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-3M', '`3M上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-6M', '`6M上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-9M', '`9M上海同业拆借利率`')
iborpro_mysql('SHIBOR-CNY-1Y', '`1Y上海同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-ON', '`ON中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-1W', '`1W中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-2W', '`2W中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-3W', '`3W中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-1M', '`1M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-2M', '`2M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-3M', '`3M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-4M', '`4M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-6M', '`6M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-9M', '`9M中国银行间同业拆借利率`')
iborpro_mysql('CHIBOR-CNY-1Y', '`1Y中国银行间同业拆借利率`')
iborpro_mysql('LIBOR-GBP-ON', '`ON伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-GBP-1W', '`1W伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-GBP-1M', '`1M伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-GBP-2M', '`2M伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-GBP-3M', '`3M伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-GBP-8M', '`8M伦敦同业拆借利率英镑`')
iborpro_mysql('LIBOR-USD-ON', '`ON伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-USD-1W', '`1W伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-USD-1M', '`1M伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-USD-2M', '`2M伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-USD-3M', '`3M伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-USD-8M', '`8M伦敦同业拆借利率美元`')
iborpro_mysql('LIBOR-EUR-ON', '`ON伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-EUR-1W', '`1W伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-EUR-1M', '`1M伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-EUR-2M', '`2M伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-EUR-3M', '`3M伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-EUR-8M', '`8M伦敦同业拆借利率欧元`')
iborpro_mysql('LIBOR-JPY-ON', '`ON伦敦同业拆借利率日元`')
iborpro_mysql('LIBOR-JPY-1W', '`1W伦敦同业拆借利率日元`')
iborpro_mysql('LIBOR-JPY-1M', '`1M伦敦同业拆借利率日元`')
iborpro_mysql('LIBOR-JPY-2M', '`2M伦敦同业拆借利率日元`')
iborpro_mysql('LIBOR-JPY-3M', '`3M伦敦同业拆借利率日元`')
iborpro_mysql('LIBOR-JPY-8M', '`8M伦敦同业拆借利率日元`')
iborpro_mysql('EURIBOR-EUR-1W', '`1W欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-2W', '`2W欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-3W', '`3W欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-1M', '`1M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-2M', '`2M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-3M', '`3M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-4M', '`4M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-5M', '`5M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-6M', '`6M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-7M', '`7M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-8M', '`8M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-9M', '`9M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-10M', '`10M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-11M', '`11M欧洲银行间同业拆借利率`')
iborpro_mysql('EURIBOR-EUR-1Y', '`1Y欧洲银行间同业拆借利率`')
iborpro_mysql('HIBOR-HKD-ON', '`ON香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-1W', '`1W香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-2W', '`2W香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-1M', '`1M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-2M', '`2M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-3M', '`3M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-4M', '`4M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-5M', '`5M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-6M', '`6M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-7M', '`7M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-8M', '`8M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-9M', '`9M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-10M', '`10M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-11M', '`11M香港同业拆借利率港元`')
iborpro_mysql('HIBOR-HKD-1Y', '`1Y香港同业拆借利率港元`')
iborpro_mysql('HIBOR-USD-ON', '`ON香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-1W', '`1W香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-2W', '`2W香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-1M', '`1M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-2M', '`2M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-3M', '`3M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-4M', '`4M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-5M', '`5M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-6M', '`6M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-7M', '`7M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-8M', '`8M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-9M', '`9M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-10M', '`10M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-11M', '`11M香港同业拆借利率美元`')
iborpro_mysql('HIBOR-USD-1Y', '`1Y香港同业拆借利率美元`')
iborpro_mysql('HIBOR-CNY-ON', '`ON香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-1W', '`1W香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-2W', '`2W香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-1M', '`1M香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-2M', '`2M香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-3M', '`3M香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-6M', '`6M香港同业拆借利率人民币`')
iborpro_mysql('HIBOR-CNY-1Y', '`1Y香港同业拆借利率人民币`')
iborpro_mysql('SIBOR-SGD-1M', '`1M新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-SGD-2M', '`2M新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-SGD-3M', '`3M新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-SGD-6M', '`6M新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-SGD-9M', '`9M新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-SGD-1Y', '`1Y新加坡同业拆借利率新加坡元`')
iborpro_mysql('SIBOR-USD-1M', '`1M新加坡同业拆借利率美元`')
iborpro_mysql('SIBOR-USD-2M', '`2M新加坡同业拆借利率美元`')
iborpro_mysql('SIBOR-USD-3M', '`3M新加坡同业拆借利率美元`')
iborpro_mysql('SIBOR-USD-6M', '`6M新加坡同业拆借利率美元`')
iborpro_mysql('SIBOR-USD-9M', '`9M新加坡同业拆借利率美元`')
iborpro_mysql('SIBOR-USD-1Y', '`1Y新加坡同业拆借利率美元`')

满满的满足感啊!

# MySQL, R

评论

程振兴

程振兴 @czxa.top
截止今天,我已经在本博客上写了659.4k个字了!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×