我想知道是否可能通过sqldf或RSQLite直接将R列表存储到SQLite数据库中,并当然可以检索出它们。
l <- list(x = 1:5, y = letters)
saveRDS(l, "tmp")
bits <- readBin("tmp", "raw", 1000)
# Then send the raw data to the DB
# On retrieval reverse the process
writeBin(x, "tmp")
readRDS("tmp")
一种可能更简单的替代RDS方法。
bits <- charToRaw(paste0(deparse(l), collapse = ""))
# And the reverse:
eval(parse(text = rawToChar(bits)))
好的,在发布之前稍微搜索一下,参考:
让我们详细说明一个最小的工作示例:
library(RSQLite)
db <- dbConnect(SQLite(), dbname = "test.sqlite")
dbSendQuery(conn = db, "CREATE TABLE test (ID INTEGER, DATA STRING)")
l <- list("super", "important", "stuff")
dbSendQuery(conn = db, sprintf("INSERT INTO test VALUES (1, '%s')",
rawToChar(serialize(l, NULL, TRUE))))
unserialize(charToRaw(dbReadTable(db, "test")$DATA))
愉快的编码!
sqlite
的。 - Davor Josipovic