[情報] R tips: RSQLite 簡易資料庫

看板R_Language作者 (拒看低質媒體)時間11年前 (2013/04/27 01:39), 編輯推噓2(208)
留言10則, 3人參與, 最新討論串1/1
[關鍵字]: 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
看起來蠻簡潔的, 若熟sql應該很方便.
04/28 02:03, 2F

04/28 02:29, , 3F
來的正好 最近搞SQL搞的快瘋了
04/28 02:29, 3F

04/28 02:29, , 4F
看看我再用的語法
04/28 02:29, 4F

04/28 02:29, , 5F
x <- paste("echo \"SET CHARSET UTF8; replace into
04/28 02:29, 5F

04/28 02:30, , 6F
Customer value(",paste(paste(paste("'",C[g,],"'",sep=""
04/28 02:30, 6F

04/28 02:30, , 7F
),collapse=",")),");\"",
04/28 02:30, 7F

04/28 02:31, , 8F
"|mysql -u 帳號 -h 主機IP -P PORT -p'密碼' 資料庫",
04/28 02:31, 8F

04/28 02:31, , 9F
system(x)
04/28 02:31, 9F

04/28 02:31, , 10F
一直寫這種鬼東西寫的我快瘋了
04/28 02:31, 10F
文章代碼(AID): #1HUhlTGD (R_Language)
文章代碼(AID): #1HUhlTGD (R_Language)