如何使用 RPostgreSQL 将数据框中的行追加/更新到具有相同列的 PostgreSQL db 表中的表?

Ran*_*ahn 3 r rpostgresql

这个问题是对本论坛之前已经发布的问题的扩展。我需要使用 RPostgreSQL 将数据框中的一行追加/更新到具有相同列的 PostgreSQL db 表中的表。我可以复制整个表或使用插入命令,如下所示:

insert into mytable (FName, LName, Age) values (Rosy, Rees, 54)
Run Code Online (Sandbox Code Playgroud)

但是,我想将行(或数据框中的子集)直接复制到 RPostgreSQL 数据库表。请问有什么建议吗?

例子:

R中的数据帧

FName   LName   Age
Rosy    Rees    54
Run Code Online (Sandbox Code Playgroud)

从数据框中复制行之前 PostgreSQL 数据库中的表

FName   LName   Age
John    Doe     35
Jane    Sanders 32
Robert  Muller  45
Run Code Online (Sandbox Code Playgroud)

从数据框中复制行后 PostgreSQL 数据库中的表

FName   LName   Age
John    Doe     35
Jane    Sanders 32
Robert  Muller  45
Rosy    Rees    54
Run Code Online (Sandbox Code Playgroud)

Chr*_*ook 5

如果您在名为“mydb”的数据库中制作了如下表格:

DROP TABLE IF EXISTS mytable;

CREATE TABLE mytable (
  fname text,
  lname text,
  age integer);

INSERT INTO mytable(fname, lname, age) VALUES
  ('John', 'D.', 35),
  ('Jane', 'S.', 32),
  ('Robert', 'M.', 45);
Run Code Online (Sandbox Code Playgroud)

然后dbWriteTable在 R 中使用类似的东西来附加记录形成一个数据框:

library(RPostgreSQL)

#load PostgreSQL driver
drv <- dbDriver("PostgreSQL")

#make connection to the postgres database
con <- dbConnect(drv, dbname = "mydb",
             host = "localhost", port = 5432, 
             user = 'postgres', password = 'postgres')

#insert data into mytable from data frame
df <- data.frame(fname = "Rosy", lname = "R.", age = 54)
dbWriteTable(con, "mytable", df, append = TRUE, row.names = FALSE)

dbDisconnect(con)
Run Code Online (Sandbox Code Playgroud)