问题标签 [dbplyr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
370 浏览

r - 在本地与远程数据库上使用 dplyr

我试图了解如何dplyr在远程数据库上使用与存储在 R 中的数据。也就是说,我不清楚哪些功能可以用于mutate(). 例如,这很好用:

但是,如果我尝试paste()在远程数据库上使用(太大而无法在本地存储),我会收到一条错误消息

这是一个例子,但在尝试使用 POSIXct 日期和来自非基础 R 的其他函数时,我注意到了一个类似的错误。

我的问题:我是否仅限于使用这里提到的非常基本的聚合函数?如果没有,如何通过远程数据库上的 dplyr 实现其他功能(自定义、附加库等)?

0 投票
1 回答
2819 浏览

r - 将列添加到 sqlite 数据库

我正在尝试将在 R 中生成的向量作为新列添加到 sqlite 表中。为此,我想使用dplyr(我安装了最新的开发版本以及dbplyr根据这里的这篇文章的软件包)。我尝试了什么:

实现此目的的简单方法是什么(不一定使用 dplyr)?

0 投票
3 回答
4609 浏览

sql-server - 如何使用 R 和 dplyr 连接来自不同 SQL 数据库的表?

我正在使用dplyr (0.7.0), dbplyr (1.0.0),DBI 0.6-1odbc (1.0.1.9000). 我想做类似以下的事情:

但我不断收到一个似乎没有任何实质内容的错误。当我使用show_query它时,似乎代码正在尝试创建一个连接两个表的 SQL 查询,而不考虑单独的数据库。根据dplyr::left_join我也尝试过的文档:

但是输出或错误消息没有变化。是否有不同的方法可以在同一台服务器上连接来自不同数据库的表?

0 投票
2 回答
1530 浏览

r - 使用 dplyr 0.7 和 R 连接到 Microsoft SQL 数据库

我正在尝试将dplyr/ dbplyr( version 0.7) 与数据库 ( Microsoft SQL Server 2014) 一起使用。我已经能够连接到这个并使用RODBC,DBIodbc包提取数据。当我尝试将 dplyr 动词直接与基础一起使用时,就会出现问题。

当我尝试使用dplyr时,我收到以下错误:

我在dplyr repo上提出了这个问题,Hadley 告诉我这很可能是一个odbc错误。当我在 repo 上提出问题时,Jim 非常有帮助odbc,但无法解决问题。

要清楚:

RODBC::sqlQuery()并且DBI::dbGetQuery()两者都有效:我得到了一个我期望的数据框,我可以使用SQL查询来取回我想要的任何东西。我只在尝试使用dplyr动词时遇到内存分配错误(实际上,即使我尝试tbl())。有很多数据,但我正在查询其中的一个子集,它很适合 R 内存。

理想情况下,如果可能的话,我宁愿将数据完全保留R 的内存之外。这样做的原因是我正在构建一个Shiny应用程序,该应用程序将根据用户选择的数据的各个方面生成绘图等。可以想象,每次用户执行此操作时连接到数据库、发送查询和接收数据都会使应用程序有些无用,因为它太慢了。我的理想情况是这样的RStudio例子:

但是,以我的基础,我无法做到这一点。任何帮助将不胜感激。

0 投票
0 回答
275 浏览

r - dply::left_join 与 postgres 后端不工作?

我正在运行这样的东西:(抱歉,它不是 100% 可重现的,除非你的机器上运行了 postgres,创建了 mydb 和表,以及给定的用户和密码)

我收到以下错误:

而且我不知道发生了什么(我 100% 确定表存在并且每个表都有 x 列;我可以使用tblsql 或直接发送 sql来查询它们RPostgreSQL::dbGetQuery)。

我用谷歌搜索了这个问题并搜索了 GitHub 和 SO,但我没有找到解决方案,也没有人报告这个问题。我发现最接近的是这个left_join 重复连接变量的问题。我在那里尝试了@hadley 的 dx 示例SQLite,但是在我的机器上可以正常工作,所以也许这是一个 postgres 特定的问题?

这是我的sessionInfo()

0 投票
0 回答
90 浏览

r - 根据 session$clientData$hostname 改变 dbPool 用户(即本地或非本地)

通常在开发连接到数据库的 Shiny 应用程序时,当应用程序位于本地/服务器上时,需要使用不同的用户名。

数据库连接的pool方法是最有效的(https://shiny.rstudio.com/articles/pool-dplyr.html),但是在函数之外调用与数据库的连接shinyServer[推荐]意味着不能使用session$clientData$url_hostname

我想做一个闪亮的应用程序,实现以下目标:

  • 使用由应用程序是否在 127.0.0.1 上运行决定的用户名启动数据库池

  • 显示表的 rows_to_show 行,其中 rows_to_show 由 a 设置sliderInput

使用 rsconnet() 运行/部署应用程序的方法就足够了。

0 投票
1 回答
2557 浏览

r - 如何在 SQL Server 非标准架构表上使用 dplyr tbl

我的问题是如何在不使用默认“dbo”架构的 SQL Server 表上使用dplyr函数,例如?tbl

有关更多上下文,我正在尝试将此处给出的 R 数据库示例应用于我自己的表: https ://db.rstudio.com/ (向下滚动到标题为“快速示例”的部分)。

开始没问题。第一部分运行良好:

我能够连接到我的 SQL Server 并加载到我的数据库中的表中。我知道这是因为

DBI::dbListTables(con)

返回我的可用表的名称(但没有任何架构)。

下一行示例代码也适用于我自己的一个表,返回表中列的名称。

DBI::dbListFields(con, "mytable1")

但是,一旦我尝试运行下一行:

dplyr::tbl(con, "mytable1")

我收到一个Invalid object name 'mytable1'错误,而不是示例中的预期表格预览。

当我在不同的表 mytable2 上运行相同的代码时,不会出现此错误。这一次,不出所料,我在运行时获得了 mytable2 的预览:

dplyr::tbl(con, "mytable2")

mytable1 和 mytable2 之间的一个区别是架构。mytable1 使用一个虚构的“abc”模式,即mydatabase.abc.mytable1。mytable2 使用默认的“dbo”模式,即mydatabase.dbo.mytable2

我试过dplyr::tbl(con, "abc.mytable1")了,但我得到了同样的Invalid object name错误。同样,当我尝试时dplyr::tbl(con, "dbo.mytable2")(尽管当我排除该dbo部分时它运行良好)。

那么如何在不使用默认“dbo”架构的 SQL Server 表上使用dplyr函数,例如?tbl谢谢。

0 投票
1 回答
658 浏览

mysql - 用于分组变异操作的 dbplyr 窗口函数

我想使用dbplyr/dplyr创建一个组级聚合变量。这是命令的要点:

但这会产生以下错误: Error: Window function `min()` is not supported by this database

奇怪的是,当我使用summarise()动词时,min()效果很好。

我错过了什么?如何在 MySQL 表的副本上使用group_by()with ?mutate()

更新:一个可重现的例子

0 投票
1 回答
52 浏览

r - 仅从脚本中获取单个变量

我有一个 postgresql 数据库连接,想从数据库中获取一个表。大概将连接信息保存在不同的文件中是一种好习惯?我现在有两个文件:

接着:

现在这使得main.R 中的con和变量都可用。thetable我只想要thetablegetthetable.R 中的变量。我怎么做?遗漏 con 变量?

此外,在 r 中使用 db 连接时是否有最佳实践?我的想法合乎逻辑吗?我正在做的事情是否有缺点,或者大多数人只是将连接与主要脚本放在一起?

0 投票
1 回答
298 浏览

r - dbplyr 当前是否假设 redshift 连接实际上是 postgres 连接?

在 redshift 上愉快地使用 dbplyr 来做基本的事情后,我发现很难执行更复杂的分析,我想知道这是由于当前的 dbplyr 工具集,还是我的错误。

典型的 mwe:

这种情况下的错误是 dbplyr 已将 sql 发送到数据库,如下所示:

所以返回的错误是:

但是,据我所知,Redshift 没有任何AS_FACTOR()功能。在这种情况下,我会期望将数据拉入我的本地会话的行为,并将其作为 R 中的一个因素进行处理,但是它似乎没有记录 a) Redshift 没有该功能,b) Redshift 没有t 支持该数据类型(我相信,尽管愿意更正),c)其目的是提取数据并创建因子。

这似乎得到了文件here的支持,它将 Redshift 撞到了 postgres 环境中,尽管 Redshift 在范围上比 postgres 受限得多。

我的具体问题是:

  • 我的推论过程对错误是否正确?
  • 解决方法是什么,是在此阶段之前收集我的结果的过程,然后在本地工作,还是我错过了什么?