我正在尝试将dplyr
/ dbplyr
( version 0.7
) 与数据库 ( Microsoft SQL Server 2014
) 一起使用。我已经能够连接到它并使用RODBC
,DBI
和odbc
包提取数据。当我尝试将 dplyr 动词直接与 base 一起使用时,问题就出现了。
当我尝试使用时dplyr
,出现以下错误:
Error in new_result(connection@ptr, statement) : std::bad_alloc
我在dplyr repo上提出了这个问题,Hadley 告诉我这很可能是一个odbc
错误。当我在repo上提出问题时,Jim 非常有帮助odbc
,但无法解决问题。
要清楚:
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 [[email protected]:/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
但是,以我的基地我无法做到这一点。任何帮助将多表示赞赏。
叹。(回答任何遇到类似问题的人。)
原来这是我试图访问的特定表的问题。
这张表可以很好地恢复,RODBC
并且没有问题DBI/odbc
,但是一旦我使用dplyr
它就会吐出这个错误。
数据库中的其他表可以很好地使用dplyr
,因此它必须与此特定表有关。更糟糕的是,我不知道为什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句