2017-08-07 38 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中都有記錄。 –