連結R 與MySQL
完整的資料庫範例操作
library(RJDBC)
jar.loc <- 'C:\\Program Files (x86)\\MySQL\\Connector.J 5.1\\mysql-connector-java-5.1.37-bin.jar'
drv <- JDBC("com.mysql.jdbc.Driver",
jar.loc,
identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://localhost/appledaily", "root", "test")
dbDisconnect(conn)
建立、表列、讀取表格資訊
dbWriteTable(conn, "iris", iris)
dbListTables(conn)
dbReadTable(conn,"iris")
使用Query 查詢數據
res <- dbGetQuery(conn, "SELECT * FROM iris")
res
捨棄已存在表格
if(dbExistsTable(conn,'iris')){
dbRemoveTable(conn, 'iris')
}
dbListTables(conn)
插入整理完的蘋果新聞表格
dbWriteTable(conn, "appledaily", appledaily)
dbListTables(conn)
dbReadTable(conn,"appledaily")
建立新聞資料表
CREATE TABLE `news_main` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(1000) DEFAULT NULL,
`category` varchar(10) DEFAULT NULL,
`view_cnt` int(11) DEFAULT NULL,
`content` text,
`dt` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
使用Append 新增資料
#寫入資料
dbWriteTable(conn, 'news_main', appledaily, append=TRUE,row.names=FALSE,overwrite=FALSE)
#讀取表格資料
dbReadTable(conn, 'news_main')
使用SQL 作基本的資料分析
res <- dbGetQuery(conn, "SELECT category, count(*) FROM news_main group by category")
res
names(res) = c('category', 'cnt')
pie(res$cnt,labels = res$category)
連結R 與SQLite
#install.packages("RSQLite")
library(RSQLite)
## Loading required package: DBI
con <- dbConnect(SQLite(), dbname = "appledaily")
dbWriteTable(con, "iris", iris,row.names=FALSE,append = TRUE, overwrite=FALSE)
## [1] TRUE
dbGetQuery(con, "SELECT * FROM iris limit 5")
## 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
dbDisconnect(con)
## [1] TRUE