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

标签 r database dplyr dbplyr

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

当我尝试使用 dplyr 时,出现以下错误:

Error in new_result(connection@ptr, statement) : std::bad_alloc

我在 dplyr repo 上提出了这个问题,Hadley 告诉我这很可能是 odbc 错误。当我 raised 时吉姆非常乐于助人odbc repo 上的问题,但无法解决问题。

要清楚:

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

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

my_db <- src_mysql(
  dbname = "shinydemo",
  host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com",
  user = "guest",
  password = "guest"
)

> my_db %>% tbl("City") %>% head(5)
# Source:   lazy query [?? x 5]
# Database: mysql 10.0.17-MariaDB [guest@shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com:/shinydemo]
     ID           Name CountryCode      District Population
  <dbl>          <chr>       <chr>         <chr>      <dbl>
1     1          Kabul         AFG         Kabol    1780000
2     2       Qandahar         AFG      Qandahar     237500
3     3          Herat         AFG         Herat     186800
4     4 Mazar-e-Sharif         AFG         Balkh     127800
5     5      Amsterdam         NLD Noord-Holland     731200

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

最佳答案

叹息。 (回答遇到类似问题的任何人。)

原来这是我尝试访问的特定表的问题。

这张表在 RODBCDBI/odbc 上没有问题,但是当我使用 dplyr 时,它就会抛出这个错误.

数据库中的其他表在 dplyr 上工作得很好,所以它一定与这个特定的表有关。更糟糕的是,我不知道为什么。

关于r - 使用 dplyr 0.7 和 R 连接到 Microsoft SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727903/

相关文章:

database - i18n 性能 : resx vs. 数据库?

根据 R 列中的重复项删除行

r - 使用 data.table 根据特定日期条件过滤观察结果

r - 如何将条件汇总为 R 中的单个变量?

python - 尝试复制 Python 结果时 Keras 错误

r - lubridate with_tz 不与 dplyr group_by 一起工作

r - 为什么在 R 中导致无效格式 '%d?

r - 如何在 R Plotly 中用颜色向量绘制一条线

database - 今天之前连接的 db2 force 应用程序

php - 通过 HTML 链接启动表单来更改 MySQL 数据?