gpt4 book ai didi

r - 将向量存储在关系数据库中

转载 作者:行者123 更新时间:2023-12-03 18:04:39 27 4
gpt4 key购买 nike

在我的计算中,我得到了一些存储在向量中的结果。因为这些计算是重复执行的,所以我将有一些向量存储在我的数据库中。
在我的数据库表 data_storage 中,每一行都应该存储一个结果向量。

直到现在我发现我的表中需要一个 BLOB 变量,并且向量必须按照 Storing R Objects in a relational database 中所述进行序列化。 .
在这个提到的来源上,David Josipovic 的答案似乎非常适合我,但我无法正确编码。查看我的代码中的数据输入...

EDIT_1:使用 dbGetQuery 时, dbExecute()dbBind()出现错误消息。序列化错误(res_1.v):缺少连接参数(无默认值)。

对我来说,重要的是要知道如何在数据库中获取结果向量以及如何将它们取出。
所以我希望你能帮助我。

提前谢谢了!

我的代码:

# needed packages for this script 
# install.packages("sqldf") # install this package if necessary
library(sqldf)

# connection to the database
db=dbConnect(SQLite(), ":memory:")

# creation of the database table
dbSendQuery(conn = db,
"CREATE TABLE IF NOT EXISTS data_storage
(ID INTEGER,
data BLOB,
PRIMARY KEY (ID))")

# calculations
# ....

# the first result vector
res_1.v=seq(from=1,to=10,by=1)

# the second result vector
res_2.v=seq(from=5,to=7,by=0.1)

# filling the data_storage table with the result vectors (in two rows)
### here an error occures
dbGetQuery(db, 'INSERT INTO data_storage VALUES (1,:blob)', params = list(blob = list(serialize(res_1.v)))) # the first row with res_1.v
dbGetQuery(db, 'INSERT INTO data_storage VALUES (2,:blob)', params = list(blob = list(serialize(res_2.v)))) # the second row with res_2.v

# getting the serialized result vector out of the database
# and converting them again to the result vector res_1.v respectively res_2.v
#######################################
### the still missing code sequence ###
#######################################

# close the connection
dbDisconnect(db)

最佳答案

也许你的语法有问题。这个RSQLite documentation page使用 dbSendStatement为执行 DML 命令构建准备好的语句:

rs <- dbSendStatement(db, 'INSERT INTO data_storage VALUES (1, :blob)')
dbBind(rs, param = list(blob = serialize(res_1.v)))
dbGetRowsAffected(rs)
dbClearResult(rs)

此答案假定 API 将正确知道如何将 BLOB 绑定(bind)到语句中。

关于r - 将向量存储在关系数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com