Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将postgresql数据中的数据拉入dataframe以便与sqldf一起使用_R_Postgresql_Sqldf - Fatal编程技术网

如何将postgresql数据中的数据拉入dataframe以便与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

我已使用postgresql成功连接到RStudio中的postgres DB,并提取了必要的数据。没问题。 问题是,现在我在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")
我承认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:")