循环中的 dbWriteTable

r dbWriteTable in loop

我有许多 table 要保存到 AWS RDS 中的 MariaDb。我可以手动保存 tables。但是我想创建一个循环来做,但我无法弄清楚 dbWriteTable 命令的语法。 库(RMySQL)

dbWriteTable(con, "Account" , Account, overwrite = T)
dbWriteTable(con, "Campaign",  Campaign, overwrite = T)
dbWriteTable(con, "Contact" , Contact, overwrite = T)
dbWriteTable(con, "User", User, overwrite =T)

相反,我想循环执行。

nm = c("Account", "Campaign", "Contact",  "User")

for (i in 1:length(nm)) {

  dbWriteTable(con,  nm[i], paste(nm[i]), overwrite = TRUE)
 }

试试这个:

for (i in nm){
  dbWriteTable(con,  i, paste(i), overwrite = TRUE)
}

您不需要从带括号的原始列表中提取 i,因为 i 直接表示列表中的那个对象。本质上,您是说对于 nm 中的每个实例,写入名为 i 的数据库 table(这将是您列表中的单词之一)并将 i 的值粘贴为名称。

根据上面的评论,像这样使用 get0 而不是 paste 会起作用:

nm = c("Account", "Campaign", "Contact",  "User")

for (i in 1:length(nm)) {
    dbWriteTable(con,  nm[i], get0(nm[i]), overwrite = TRUE)
}