cmo*_*cmo 7 postgresql r r-dbi
我有一个 data.frame,我试图在R
使用该DBI
包时将其附加到 PostgreSQL 数据库中的表中。
library(DBI)
library(RPostgreSQL)
mydrv <- dbDriver(drvName = "PostgreSQL")
mydbcon <- dbConnect(drv = mydrv , host = myhostname , dbname = mydbname , username = myusername , password = mypassword )
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做dbAppendTable
,它会失败并显示一条奇怪的错误消息:
dbAppendTable( conn = mydbcon , name = mytable , value = mydata )
Run Code Online (Sandbox Code Playgroud)
postgresqlExecStatement(conn, statement, ...) 中的错误:RS-DBI 驱动程序:(无法检索结果:错误:“,”处或附近的语法错误第 4 行:(?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?)
但是如果我用sqlAppendTable
and分两步做dbExecute
,那么它工作正常:
append_cmd <- sqlAppendTable( con = mydbcon , table = mytable , values = mydata , row.names = FALSE )
dbExecute( conn = mydbcon , statement = append_cmd )
Run Code Online (Sandbox Code Playgroud)
的文档dbAppendTable
说:
dbAppendTable() 方法假定表已经预先创建,例如使用 dbCreateTable()。默认实现调用 sqlAppendTableTemplate(),然后使用 param 参数调用 dbExecute()。符合 ANSI SQL 99 的后端使用什么?作为准备查询的占位符不需要覆盖它。具有不同 SQL 语法的后端使用 ? 作为准备查询的占位符可以覆盖 sqlAppendTable()。其他后端(使用不同的占位符或使用完全不同的方式创建表)需要覆盖 dbAppendTable() 方法。
关于'?'
占位符的部分似乎相关,但我不明白它是如何适应的。为什么 PostgreSQL 不满足这一点?为什么我必须分两步做才能让它工作?
归档时间: |
|
查看次数: |
669 次 |
最近记录: |