【发布时间】:2017-06-19 16:30:35
【问题描述】:
我正在从一个表中读取 300 万条记录,我想将其写入一个文本文件,但我正面临程序内存不足引发错误
超过内存的最大空间 3096 MB。
我的系统配置是带有 4 GB RAM 的 i5 处理器。
请在下面找到代码。
library(RODBC)
con <- odbcConnect("REGION", uid="", pwd="")
a <- sqlQuery(con, "SELECT * FROM dbo.GERMANY where CHARGE_START_DATE = '04/01/2017'");
write.table(a,"C:/Users/609354986/Desktop/R/Data/1Germany.txt",na="",sep="|",row.names = FALSE,col.names = FALSE)
close(con)
【问题讨论】:
-
不要? R 不是 ETL 工具。您的数据库已经为此提供了一些非常好的工具。 3M 行是数据库的小数据。您正在使用哪个数据库以及为什么您首先要尝试导出数据?
-
为什么不使用新版本的 dplyr 并在数据库内存不足的情况下做您需要的事情?然后当你有想要分析的东西(可能更小)时将它带入 R。
-
我正在尝试使用 ODBC 连接连接到 SQL Server。我只想从数据库中检索数据并根据我的需要进行必要的转换。我能够为较小的表执行此操作,但是对于这个包含 300 万条记录的特定表,我的内存不足,不知道如何处理它
-
R 不是解决此问题的正确工具。与“本机”数据库解决方案相比,它会非常慢。您甚至可以使用普通的 SQL 客户端并重定向到文件...