mysql -u root -p出現 mysql > 後,開始建立新用者資料並設定密碼:
mysql > mysql > GRANT ALL PRIVILEGES ON *.* TO 'stockuser'@'%' IDENTIFIED BY 'password'; mysql > FLUSH PRIVILEGES; mysql > quit;若MySQL伺服器要開放遠端連結,記得防火牆允入3306埠,另外 MySQL的設定檔也要檢查:
vi /etc/mysql/my.cnf記得 bind-address = 127.0.0.1 這行要註解
#bind-address = 127.0.0.1也記得 MySQL 要重新啟動
service mysql restart資料庫部分沒問題的話,就可以準備來使用R抓取股價資料~R 如果還沒有安裝過 RMySQL package, 也記得先安裝:
install.packages("RMySQL")確認安裝完成後,就開始吧...
library(RMySQL) library(DBI) library(tidyquant) library(dplyr) cn <- dbConnect( drv = RMySQL::MySQL(), username='stockuser', password='password', host='127.0.0.1', port = 3306, dbname = "stockdb" ) # 利用 tidyquant 取得 Yahoo 上的台灣五十股價資料, 寫入 MySQL stockdb > tw{股票代碼} tw50 <- c("1101","1102","1216") #只有示範三檔股票 for (i in tw50) { stockid <- paste(i,"TW",sep=".") tblname <- paste("tw",i,sep="") print(stockid) sdata <- tq_get(stockid) dbWriteTable(cn, name=tblname, value=sdata, overwrite=TRUE) Sys.sleep(10) # 每次 Loop 先休息 10 秒 } # 利用 tidyquant 取得 Yahoo 上的IBM股價資料, 寫入 MySQL stockdb > ibm ibm <- tq_get("IBM") dbWriteTable(cn, name="ibm", value=ibm, overwrite=TRUE) dbDisconnect(cn) #記得斷開資料庫連線資料都抓取完成後,MySQL資料庫裡面 stockdb > 就會多個股 table :
mysql -u stockuser -p 輸入密碼,登入後... mysql> use stockdb; Database changed mysql> show tables; +-------------------+ | Tables_in_stockdb | +-------------------+ | ibm | | tw1101 | | tw1102 | | tw1216 | +-------------------+ 4 rows in set (0.00 sec)以後就可以直接從 MySQL 中讀取股價資料來運用:
# 從 MySQL 取出 IBM 股價資料 cn <- src_mysql( user='stockuser', password='password', host='127.0.0.1', port = 3306, dbname = "stockdb" ) ibm_table <- tbl(cn, "ibm") ibm_table dbDisconnect(cn)延伸閱讀資料:
Amazon RDS + R (其實我是租不起, 所以自建 MySQL...)
R學習筆記 - 資料工程篇(四) Database
沒有留言:
張貼留言