1

myschema.fruits在 postgresql 数据库中有一个表mydatabase。在 R 脚本中,我想在我的脚本末尾插入一行到该表。表格行有3 列type和。我的 R 脚本中有 3 个不同的变量,它们具有相同的变量名称,如下所示:tastecolor

type <- "Apple"
taste <- "Sweet"
color <- "Red"

我想使用RPostgreSQL 驱动程序来执行此插入,但我不知道该怎么做?

4

2 回答 2

3

作为使用INSERT INTO命令的替代方法,请考虑使用允许对查询进行参数化的低级postgresqlExecStatement函数。这样做的主要优点是您不必为适当的数据类型手动构造查询字符串,在这种情况下,您可以省略额外的引号'

type <- "Apple"
taste <- "Sweet"
color <- "Red"

con = dbConnect(dbDriver("PostgreSQL"),dbname = "mydatabase",
                host = "localhost", port = 5432,
                user = "postgres") 
tmp <- postgresqlExecStatement(con,
               'insert into myschema.fruits VALUES ($1, $2, $3)',
               list(type, taste, color))
dbClearResult(tmp)
dbDisconnect(con)
于 2016-10-25T03:03:15.117 回答
1

如有必要,请更改主机、端口、用户并添加密码。

第一个选项:将数据框附加到表中

dt2insert = data.frame(type = "Apple",
                       taste = "Sweet",
                       color = "Red",
                       stringsAsFactors = FALSE)
con = dbConnect(dbDriver("PostgreSQL"),dbname = "mydatabase",
                host = "localhost", port = 5432,
                user = "postgres") 
dbWriteTable(con, name = c("myschema","fruits"), value = dt2insert,append=TRUE,row.names=FALSE,overwrite=FALSE)
dbDisconnect(con)

第二种选择:使用 INSERT INTO 命令

type <- "Apple"
taste <- "Sweet"
color <- "Red"
qry = paste0("INSERT INTO myschema.fruits VALUES ('",type,"','",taste,"','",color,"');")

con = dbConnect(dbDriver("PostgreSQL"),dbname = "mydatabase",
                host = "localhost", port = 5432,
                user = "postgres") 
dbSendQuery(con,qry)
dbDisconnect(con)
于 2016-10-06T09:38:30.700 回答