我一直在使用sqldf软件包一段时间使用SQLite驱动器,默认情况下是这样。
但是,现在我想利用PostgreSQL的窗口函数。我已经安装了RPostgresSQL,我认为我正确使用了sqldf文档指定的选项。但即使我尝试执行指定或不指定驱动器和dbname的简单查询,也会返回错误消息:
library(RPostgreSQL)
library(sqldf) # the R console returns "sqldf will default to using PostgreSQL"
df = data.frame(color=c("red","blue"),value=c(10,20))
sqldf("select * from df")
sqldf("select * from df",drv="PostgreSQL",dbname=getOption("sqldf.RPostgreSQL.dbname"))
返回的错误消息如下:
postgresqlNewConnection(drv,...)出错:RS-DBI驱动程序:(可以 不在dbname“test”上连接postgres @ localhost)错误 !dbPreExists:参数类型无效
我错过了什么?
答案 0 :(得分:0)
好的我知道如何让它发挥作用。根据@ akrun的评论,必须创建一个“测试”数据库,但这还不够。在sqldf中运行任何查询之前,您还必须在R中设置以下选项(获得解决方案here)
options(sqldf.RPostgreSQL.user = "postgres",
sqldf.RPostgreSQL.password = "postgres",
sqldf.RPostgreSQL.dbname = "test",
sqldf.RPostgreSQL.host = "localhost",
sqldf.RPostgreSQL.port = 5432)