如何将postgresql数据中的数据拉入dataframe以便与sqldf一起使用
我已使用postgresql成功连接到RStudio中的postgres DB,并提取了必要的数据。没问题。 问题是,现在我在RStudio中有了数据集,我希望能够使用sqldf将其作为数据帧进行查询。这就是问题所在 我已经尝试了以下代码如何将postgresql数据中的数据拉入dataframe以便与sqldf一起使用,r,postgresql,sqldf,R,Postgresql,Sqldf,我已使用postgresql成功连接到RStudio中的postgres DB,并提取了必要的数据。没问题。 问题是,现在我在RStudio中有了数据集,我希望能够使用sqldf将其作为数据帧进行查询。这就是问题所在 我已经尝试了以下代码 tab1 <- DBI::dbGetQuery(con, "SELECT a.user_id ,a.some_id1
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")
我承认postgresql不是我以前使用过的软件包,所以希望能得到一些帮助
提前感谢确定,问题似乎在于,当恢复到sqldf时,需要明确指定驱动程序和数据库名,如下例所示:
sqldf(query, drv="SQLite", dbname=":memory:")
我对此一无所知,但这解决了我的问题,所以我会考虑回答的问题。
请在此处阅读更多信息:
好的,问题似乎在于,当恢复到sqldf时,需要明确指定驱动程序和数据库名,如下例所示:
sqldf(query, drv="SQLite", dbname=":memory:")
我对此一无所知,但这解决了我的问题,所以我会考虑回答的问题。
请在此处阅读更多信息:
谢谢@cory-我一开始就试过了。返回[1]True,然后仍然给出相同的错误。是的,我意识到这不是问题所在。看起来端口被阻塞了。使用
sqldf(“queryhere”,port=1234)尝试另一个但不幸的是仍然存在相同的问题。请原谅我的天真,但一旦我成功返回了初始postgresql查询的结果,数据是否应该不在我的机器上的内存中?“tab1”数据集驻留在哪里?端口80几乎总是打开的。20, 22, 25. 再试试。我认为这个包将数据推送到R之外的本地内存数据库中,并使用TCP连接使用您的查询字符串进行查询。仍然没有成功。我可能不得不尝试另一种方法来解决这个问题。谢谢@cory-我一开始就试过了。返回[1]True,然后仍然给出相同的错误。是的,我意识到这不是问题所在。看起来端口被阻塞了。使用sqldf(“queryhere”,port=1234)尝试另一个但不幸的是仍然存在相同的问题。请原谅我的天真,但一旦我成功返回了初始postgresql查询的结果,数据是否应该不在我的机器上的内存中?“tab1”数据集驻留在哪里?端口80几乎总是打开的。20, 22, 25. 再试试。我认为这个包将数据推送到R之外的本地内存数据库中,并使用TCP连接使用您的查询字符串进行查询。仍然没有成功。我可能必须尝试另一种方法来解决这个问题。如果您不指定后端,那么如果加载了RPostgreSQL、RMySQL或RH2,sqlldf会假定您希望使用该后端,否则,它将默认为sqlite。dbname=“:memory:”是sqlite的默认值,因此无需指定。所有这些都在?sqllf
帮助页面上讨论。如果您遇到问题,使用sqldf参数verbose=TRUE
会很有帮助。如果您没有指定后端,那么如果加载了RPostgreSQL、RMySQL或RH2,则sqlldf假定您要使用该后端,否则默认为sqlite。dbname=“:memory:”是sqlite的默认值,因此无需指定。所有这些都在?sqllf
帮助页面上讨论。如果您遇到问题,使用sqldf参数verbose=TRUE
会很有帮助。
sqldf(query, drv="SQLite", dbname=":memory:")