如何正确设置R以从PostgreSQL查询本地数据帧?

时间:2017-08-07 02:47:04

标签: r postgresql sqldf

我一直在使用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:参数类型无效

我错过了什么?

1 个答案:

答案 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)