我正在尝试将大型数据库表导入R以进行一些全局分析。 我使用ROracle连接到Oracle DB,并使用dbGetquery。 直接在查询中进行最小选择和必要的where子句以减小数据集的范围,但对于1,200万行,它仍然是40列。
我的PC只有8GB的RAM,我该如何处理? 有没有办法将这些数据存储在磁盘上而不是RAM上?或类似的方式? SAS中所做的相同的事情很好用。
有什么想法吗?
答案 0 :(得分:1)
一些想法:
也许可以在服务器端进行一些汇总?
您将使用R中的此数据来执行某些操作,对不对?因此,您可以尝试不加载数据,而是创建tbl对象并在R中进行操作和聚合
library(dplyr)
my_tbl <- 'SELECT ... FROM ...' %>% sql() %>% tbl(con, .)
其中con
是您的联系人
答案 1 :(得分:0)
这里有几个想法供您考虑。
library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=Server_Name; Database=DB_Name;Uid=; Pwd=; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from MyTable Where Name = 'Asher';"))
odbcClose(channel)
如果您可以将表格导出为CSV文件...
require(sqldf)
df <- read.csv.sql("C:\\your_path\\CSV1.csv", "select * from file where Name='Asher'")
df