[情報] R tips: RSQLite 簡易資料庫
[關鍵字]: R, database, SQLite
RSQLite 提供一個簡便的介面讓R User可以處理超過記憶體的表格。
並且使用者不需要事先架設任何database system。
ps. 若同時只有單一程式會改資料庫時,SQLite的效能是非常棒的
也算是一個簡易的學習DBI 介面的機會。
熟悉DBI 介面後,要使用MySQL 、PostgreSQL等資料庫系統也很像。
---
事實上我個人建議,如果表格的大小超過可用記憶體的一半,
就要考慮使用database system了。
因為R 在修改table的時候並不一定是直接修改原本的記憶體,
而是會複製一份副本出來。所以記憶體很容易不小心被吃光後就...
---
以下做個範例用法:
```r
library(RSQLite)
db.path <- "test.db"
db <- dbConnect("SQLite", db.path)
dbWriteTable(db, "iris", iris)
dbDisconnect(db)
```
iris 就會被寫入"test.db"
```r
db <- dbConnect("SQLite", db.path)
iris <- dbReadTable(db, "iris")
dbDisconnect(db)
```
這樣可以再把iris從"test.db"中讀回記憶體
批次處理資料則可以使用append指令
```r
library(RSQLite)
db.path <- "test.db"
db <- dbConnect("SQLite", db.path)
dbWriteTable(db, "big_data", big_data.part1)
dbWriteTable(db, "big_data", big_data.part2, append=TRUE)
# ...
dbDisconnect(db)
```
另外注意預設似乎會包含row.names
之後只要建好index 後,仍然可以高效的做選取
```r
library(RSQLite)
db.path <- "test.db"
db <- dbConnect("SQLite", db.path)
res <- dbSendQuery(db, "SELECT Sepal_Length FROM iris WHERE Species =
'setosa'")
data <- fetch(res) # 這裡也許需要讀取很多次,看資料量
dbDisconnect(db)
```
--
歡迎加入 Taiwan R User Group : http://www.facebook.com/Tw.R.User
我們每週一都有在「政大公企中心(台北市金華街187號)西樓WB05」
舉辦Machine Learning / Data Mining Monday:
報名 http://www.meetup.com/Taiwan-R/
聚會影片 https://www.youtube.com/user/TWuseRGroup
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.162.250
推
04/27 23:51, , 1F
04/27 23:51, 1F
→
04/28 02:03, , 2F
04/28 02:03, 2F
推
04/28 02:29, , 3F
04/28 02:29, 3F
→
04/28 02:29, , 4F
04/28 02:29, 4F
→
04/28 02:29, , 5F
04/28 02:29, 5F
→
04/28 02:30, , 6F
04/28 02:30, 6F
→
04/28 02:30, , 7F
04/28 02:30, 7F
→
04/28 02:31, , 8F
04/28 02:31, 8F
→
04/28 02:31, , 9F
04/28 02:31, 9F
→
04/28 02:31, , 10F
04/28 02:31, 10F
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章
-2
34