2017-08-07 74 views
0

我一直在使用sqldf软件包很长一段时间,使用SQLite驱动器,它默认出现。如何正确设置R从PostgreSQL查询本地数据帧?

但是,现在我想利用PostgreSQL的窗口函数。我已经安装了RPostgresSQL,我想我正确使用了sqldf的文档指定的选项。但是,即使我尝试做一个简单的查询确定或没有驱动器,数据库名,则返回一个错误信息:

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驱动程序:(可以 不 dbPreExists连接的Postgres @本地的DBNAME “测试”)错误:无效的参数类型

我缺少什么?

+0

您可以检查[这里](https://stackoverflow.com/questions/10237113/using-sqldf -and-rpostgresql-together) – akrun

+0

@akrun我也看到了,它不适合我。我在PC上安装了PostgreSQL和一个“测试”数据库...无论如何,这个解决方案看起来很奇怪,为什么当你想要查询本地(内存)数据框时连接到数据库......? – Victor

回答

0

好吧我想出如何使它的工作。在@ akrun的评论之后,人们必须创建一个“测试”数据库,但这还不够。你也必须建立在R中的下列选项中运行sqldf任何查询之前(得到了解决here

options(sqldf.RPostgreSQL.user = "postgres", 
     sqldf.RPostgreSQL.password = "postgres", 
     sqldf.RPostgreSQL.dbname = "test", 
     sqldf.RPostgreSQL.host = "localhost", 
     sqldf.RPostgreSQL.port = 5432) 
+0

不完全正确。所有选项都有默认值,因此您只需设置要使用非默认值的选项。特别是,上面的答案显示了选项的默认值,所以如果这是你想要的,那么上面显示的代码都不需要。这在?sqldf和README中都有记录。 –