library(DBI)
library(RSQLite)
db <- dbConnect(RSQLite::SQLite(), ":memory:")
dbExecute(db , "create table if not exists drug_rank (
_id integer primary key autoincrement,
pertData_type text,
pertData_name text,
pathway_name text,
drug_name text,
drug_rank_RData blob
)"
)
我想使用準備好的陳述句插入資料。我把所有的都drug_rank_RData另存為.RData,本質上是一個list,我想把它們都放在資料庫中。我該怎么做?
我嘗試了以下但不起作用:
df <- list(a =c(1, 2,3), b = c(2, 4, 6), c = c(3, 6, 9)) |> as.data.frame()
drug_rank_obj <- list(sig_drugs = df, name = "test_drug_rank_obj")
dbGetQuery(db,
"insert into drug_rank values (?, ?, ?, ?, ?, ?)",
params = list(
1,
"test type",
"test name",
"test pathway",
"test drugname",
drug_rank_obj
)
)
謝謝你。
uj5u.com熱心網友回復:
唯一的問題是您需要將資料序列化為二進制格式才能將其插入到博客中。這個例子應該有效
library(DBI)
library(RSQLite)
db <- dbConnect(RSQLite::SQLite(), ":memory:")
dbExecute(db , "create table if not exists drug_rank (
_id integer primary key autoincrement,
name text,
object blob)"
)
# serialize data to binary
drug_rank_obj <- list(a =c(1, 2,3), b = c(2, 4, 6), c = c(3, 6, 9)) |>
as.data.frame() |> serialize(NULL)
# insert into data base
dbSendQuery(db,
"insert into drug_rank values (?, ?, ?)",
params = list(1, "my data", list(drug_rank_obj))
)
## retrieve data
rows <- dbGetQuery(db, "select * from drug_rank where _id==?",
params=list(1))
## un-serialize data into object
data <- unserialize(rows$object[[1]])
進行插入時,使用dbSendQuery而不是dbGetQuery
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377750.html
