如何将 postgresql 数据中的数据提取到数据框中以与 sqldf 一起使用

How to pull data from postgresql data into dataframe for use with 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")

同样,这个 returns 我想在 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 不是我以前使用过的软件包,因此希望得到一些帮助。

提前致谢

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

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

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

在此处阅读更多内容:

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