r - 如何将 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 不是我以前使用过的包,所以希望能得到一些帮助。
提前致谢
解决方案
好的,问题似乎在于当恢复到 sqldf 时,您需要明确指定驱动程序和 dbnames,如下例所示:
sqldf(query, drv="SQLite", dbname=":memory:")
我对此一无所知,但这解决了我的问题,所以我会考虑回答这个问题。
在这里阅读更多:
https://www.r-bloggers.com/using-postgresql-in-ra-quick-how-to/