R和Access:来自相对较小的表的内存分配错误

时间:2016-01-08 18:00:14

标签: r ms-access

我在Access数据库(称为State)中有两个表,我正在尝试读入R。

第一个表(Citation)有213个记录x 47个字段。当我尝试访问r中的数据集时,会抛出内存分配错误:

> library(RODBC)
> db <- "state.mdb"
> qry <- "SELECT * FROM Citation"
> con2 <- odbcConnect("StateDB")
> tbl <- sqlQuery(con2, qry)

Error in odbcQuery(channel, query, rows_at_time) : 
  'Calloc' could not allocate memory (107374182400 of 1 bytes)
In addition: Warning messages:
1: In odbcQuery(channel, query, rows_at_time) :
  Reached total allocation of 10000Mb: see help(memory.size)

然而在同一个数据库中,一个名为Collision的更大的表(298,645个记录x 40个字段)不会抛出任何类型的错误并在R中完美显示。

是什么给出的?

我尝试了以下内容:

- 使用memory.limit(size = 1000)将R可用的内存从8055增加到10,000

- 将计算机中的RAM量增加到8 GB

- 将我的R版本改为32位(这给了我一个'ODBC Connection Failed'消息,所以我切换回64位)

你会认为更大的表会抛出内存错误,而不是更小的表,所以我想知道是否还有其他事情发生。特别是因为它看起来需要的内存量非常大(107374182400字节??)

我对R比较陌生,所以任何帮助都会非常感激。我正在使用Windows 7和RStudio,64位,8 GB RAM。

1 个答案:

答案 0 :(得分:1)

显然RODBC不喜欢Access表中的OLE Object字段。删除它们(或者可能只是从SELECT语句的列列表中省略它们)似乎可以避免这个问题。