首页 > 解决方案 > 如何将 postgresql 数据中的数据提取到数据框中以与 sqldf 一起使用

问题描述

我已经使用 postgresql 成功连接到 RStudio 中的 postgres 数据库并拉回了必要的数据。那里没问题。问题是现在我在 RStudio 中有数据集,我希望能够使用 sqldf 将其作为数据框进行查询。这就是问题所在。

我已经尝试过以下代码

tab1 <-  DBI::dbGetQuery(con, "SELECT   a.user_id
                                     ,a.some_id1
                                     ,a.some_id2
                                     ,a.some_var1
                                     ,a.some_var2 
                                     ,a.some_var3 
                                     ,a.some_var4  
                                     ,a.some_var5
                                     ,b.some_var6  FROM sessions a LEFT JOIN session_experiments b on a.some_id1 = b.some_id2
                                      AND a.some_var1 = b.some_var1")

同样,这将返回我想在 RStudio 中看到的数据。然后我尝试类似...

tab2 <- sqldf("SELECT COUNT (DISTINCT some_id1) FROM tab1")

...我看到以下错误。

Error in postgresqlNewConnection(drv, ...) : 
  RS-DBI driver: (could not connect postgres@localhost:5432 on dbname "test": could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
)
Error in !dbPreExists : invalid argument type

承认 postgresql 不是我以前使用过的包,所以希望能得到一些帮助。

提前致谢

标签: rpostgresqlsqldf

解决方案


好的,问题似乎在于当恢复到 sqldf 时,您需要明确指定驱动程序和 dbnames,如下例所示:

sqldf(query, drv="SQLite", dbname=":memory:")

我对此一无所知,但这解决了我的问题,所以我会考虑回答这个问题。

在这里阅读更多:

https://www.r-bloggers.com/using-postgresql-in-ra-quick-how-to/


推荐阅读