首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tbl和src_monetdblite访问数据

使用tbl和src_monetdblite访问数据
EN

Stack Overflow用户
提问于 2018-10-11 00:09:10
回答 3查看 239关注 0票数 0

很抱歉,如果这个问题在别处被问过,我找不到它。我正在使用MonetDBLite中的一些basic examples

代码语言:javascript
复制
> dbGetQuery(dbcon, "SELECT MAX(mpg) FROM mtcars WHERE cyl = 8")
L3
1 19.2

有效,但是

代码语言:javascript
复制
> ms <- MonetDBLite::src_monetdblite("./DB")
> t <- tbl(ms, "mtcars")
Error in UseMethod("tbl") : 
no applicable method for 'tbl' applied to an object of class
"c('src_monetdb', 'src_sql', 'src')"

它似乎试图将数据库赋值给t,而不是表。

任何建议都将不胜感激。

我仔细阅读了参考资料,发现了一个useR2016演示文稿,并注意到其中的不同之处:

代码语言:javascript
复制
> ms
src:  MonetDBEmbeddedConnection
tbls: mtcars

好奇..。

EN

回答 3

Stack Overflow用户

发布于 2018-11-15 03:42:22

我非常喜欢和dplyr一起使用MonetDBLite。我对Hannes Mühleisen's的补充(谢谢你的套餐!)答案是,您加载包的顺序似乎很重要。在dplyrdbplyr之后加载MonetDBLite似乎是我的关键。首先加载MonetDBLite会导致类似于nzgwynn提到的错误。

有时我可以毫无问题地连接到数据库。其他时候,我会收到如下错误消息:

UseMethod("db_query_fields")中出现

错误:没有适用于"MonetDBEmbeddedConnection“类的对象的”db_query_fields“方法。

像nzgwynn一样,我很困惑为什么它有时可以工作,而其他时候却不行。对我来说,重新启动和重新安装不一定能解决这个问题。

这条线索,来自一个关于sparklyr的问题,引导我探索包的加载顺序:

https://github.com/rstudio/sparklyr/issues/38

就像在sparklyr中提到的一样,我也注意到在其他R数据库包中,如果全局环境已经包含连接对象,MonetDBLite将自动加载和附加。我的问题是,我的工作区中有一个src_monetdb对象,它导致MonetDBLite在启动RStudio时加载。所以当我认为我是在dplyrdbplyr之后加载它的时候,它实际上是先加载的。如果我清除工作区,然后重新启动,我可以按首选顺序加载包。到目前为止,这种方法是有效的。

我认为从一个干净的工作区开始通常被建议为良好的实践,例如:https://twitter.com/hadleywickham/status/561146907519500288。考虑到MonetDBLite的快速查询能力,从一个全新的工作空间开始也不会浪费您的时间。

最后,我将热情地介绍一下如何使用MonetDBLite。我在RStudio's database page上看到了这一点,很快就对它的设置和速度留下了深刻的印象。这是我在R中发现的处理大约2 GB数据集的最好方法。当交互地探索数据时,dplyr查询运行得如此之快,感觉就像是在处理内存中的数据。如果我想要做的只是将整个数据集加载到内存中,那么MonetDBLite的速度与我尝试过的其他方法一样快,甚至更快,比如来自fst包的read.fst()

票数 2
EN

Stack Overflow用户

发布于 2018-10-11 19:15:10

在使用tbl和朋友之前,您需要调用library("dplyr")。另外,还要确保您安装了dbplyr

更新:另外,请确保在启动时加载的存储工作区中没有连接对象(src)。从.Rdata文件加载连接不起作用!相反,应该在每次运行脚本时从头开始创建连接/src。

票数 0
EN

Stack Overflow用户

发布于 2018-10-12 00:27:16

我关闭R并再次打开它,相同的代码运行良好……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52744540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档