我想将一个完整的数据框导出到一个已经在数据库中创建的表(postgresql)并包含类似的数据。
我发现几个问题解释有关dbwrite表(.... overwrite = TRUE),我不想覆盖我表中已经存在的数据。我只想用r console中的数据框更新我的表。
有人可以让我知道我该怎么做..
类似这样的事情
dbInsertTable(con, df, tablename = "MyTable")
答案 0 :(得分:6)
您需要dbWriteTable
假设您没有在数据框中使用行名称,那么
dbWriteTable(con, "MyTable", df, row.names=FALSE, append=TRUE)
如果您希望df中的行名称成为数据库表中的列,那么您可以将该选项设置为TRUE
。如果您的表位于公共架构以外的架构中,那么您将执行c('myschema', 'MyTable')
而不是直观的“myschema.MyTable”。此外,数据框的列需要与数据库表中的列的顺序相同。它根据订单而不是名称进行匹配。
顺便说一下,你可能不应该在postgres表或列名中使用大写字母,因为那时你需要引用它们。如果你真的使用大写字母,那么你需要像dbWriteTable(con, '"MyTable"', df, row.names=FALSE, append=TRUE)