精華區beta R_Language 關於我們 聯絡資訊
[關鍵字]: 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
lung7735:謝謝! 我會試看看的 04/27 23:51
andrew43:看起來蠻簡潔的, 若熟sql應該很方便. 04/28 02:03
gsuper:來的正好 最近搞SQL搞的快瘋了 04/28 02:29
gsuper:看看我再用的語法 04/28 02:29
gsuper:x <- paste("echo \"SET CHARSET UTF8; replace into 04/28 02:29
gsuper:Customer value(",paste(paste(paste("'",C[g,],"'",sep="" 04/28 02:30
gsuper:),collapse=",")),");\"", 04/28 02:30
gsuper:"|mysql -u 帳號 -h 主機IP -P PORT -p'密碼' 資料庫", 04/28 02:31
gsuper:system(x) 04/28 02:31
gsuper:一直寫這種鬼東西寫的我快瘋了 04/28 02:31