我有一个SQL数据库,该数据库有两列,一列包含人员ID,一列包含其信息。我有一个要从sql数据库查询的患者ID的数据框,我想使用一个for循环来查询它们,并且我希望将从for循环中获取的数据传输到一个表中,但是不成功。
我尝试了for循环的不同变体,但是它们都导致字符串向量出错,或者它们仅将最新信息放入表中,而忽略了之前任何ID的其他信息。
std::byte&
然后我收到此错误:
result_create(conn @ ptr,statement)中的错误:期望一个 字符串值:[type = character;程度上= 90907]。
预期结果应该是一个表格,其中包含我的数据ID和我在数据框中拥有的选定人员ID的相应信息。
答案 0 :(得分:1)
请考虑使用DBI的sqlInterpolate
安全有效地将参数绑定到查询中,并避免连接或标点的任何需要:
# PREPARED STATEMENT (NO DATA)
sql <- "SELECT * FROM kv WHERE Person = ?pid"
for (i in CancerMet2){
query <- sqlInterpolate(conn, sql, pid = i)
info <- dbGetQuery(conn, query)
print(info)
}
要将结果保存在数据帧的命名列表中:
df_list <- setNames(lapply(CancerMet2, function(i) {
query <- sqlInterpolate(conn, sql, pid = i))
dbGetQuery(conn, query)
}),
paste0("Person_", CancerMet2))
df_list$Person_1
df_list$Person_2
df_list$Person_3
...