R:openxlsx和sqldf

我有一个关于使用R从Excel读取文件的问题。 我正在阅读Excel工作表中的几个选项卡,并执行一些基本的sql命令并使用sqldf合并它们。 我的问题是我的内存在读取Excel数据后陷入了很多困境。 我可以运行该程序,但不得不安装8GB的内存不使用像我的可用内存的80%。

我知道如果我有一个文本文件,我可以直接使用read.csv.sql()读取它,并在“读取”命令中执行sql,这样我的RAM就不会陷入困境。 我也知道你可以将表保存为tempfile(),所以它不占用RAM空间。 使用sqldf的汇总数据没有太多的行,所以不会导致内存不足。

我所能想出的唯一解决scheme是设置一个R程序,它只读取数据并创build文本文件。 closuresR,运行第二个程序,使用sqldf从文本文件中读取它并执行SQL命令并合并数据。 我不太喜欢这个解决scheme,因为它仍然涉及在初始读入程序中使用大量的RAM,并使用2个程序,我只想使用1。

我也可以从Excel选项卡手动创build文本文件,但是目前有些更新是定期进行的,所以我宁愿不必这样做。 另外我想要更自动化的东西来创build文本文件。

作为参考,这些表格是以下大小的4个表格:

  1. 3k行×9列
  2. 200K x 20
  3. 4k x 16
  4. 80k x 13
  5. 100K x 12

我的阅读是这样的:

table<-read.xlsx(filename, sheet="Sheet") summary<-sqldf("SQL code") rm(table) gc() 

我已经尝试在每次读入和sql操作之后运行rm(table)和gc()命令(之后我不再需要整个表),但是这些命令似乎没有释放太多的RAM。 只有通过closuresR会话,我会得到1-2 GB的。

那么有什么办法可以把Excel文件读入R,而不是在这个过程中占用RAM吗? 我也想注意到这是在一台工作电脑上,我没有pipe理员权限,所以我想要安装的任何东西,我将不得不从IT要求这是我想避免的障碍。