我myschema.fruits
在 postgresql 数据库中有一个表mydatabase
。在 R 脚本中,我想在我的脚本末尾插入一行到该表。表格行有3 列type
和。我的 R 脚本中有 3 个不同的变量,它们具有相同的变量名称,如下所示:taste
color
type <- "Apple"
taste <- "Sweet"
color <- "Red"
我想使用RPostgreSQL 驱动程序来执行此插入,但我不知道该怎么做?
我myschema.fruits
在 postgresql 数据库中有一个表mydatabase
。在 R 脚本中,我想在我的脚本末尾插入一行到该表。表格行有3 列type
和。我的 R 脚本中有 3 个不同的变量,它们具有相同的变量名称,如下所示:taste
color
type <- "Apple"
taste <- "Sweet"
color <- "Red"
我想使用RPostgreSQL 驱动程序来执行此插入,但我不知道该怎么做?
作为使用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)
如有必要,请更改主机、端口、用户并添加密码。
第一个选项:将数据框附加到表中
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)