是否可以从PostgreSQL读取data.table?
发布时间:2020-12-13 16:17:02 所属栏目:百科 来源:网络整理
导读:我正在对PostgreSQL数据库中存储的大量数据进行一些分析.出于速度和内存的原因,我正在使用data.table包.目前我这样做是为了阅读数据. library(RPostgreSQL)library(data.table)...query - "SELECT * FROM eqtl"data - as.data.table(dbGetQuery(con,query))
我正在对PostgreSQL数据库中存储的大量数据进行一些分析.出于速度和内存的原因,我正在使用data.table包.目前我这样做是为了阅读数据.
library(RPostgreSQL) library(data.table) ... query <- "SELECT * FROM eqtl" data <- as.data.table(dbGetQuery(con,query)) 我想知道是否有更好的方法来执行此操作,不涉及将整个事物读入data.frame,然后将其复制到data.table中.
正如Arun在评论中指出的那样,你可以在dbGetQuery结果上使用setDT.
此外,我的软件包dwtools中还提供了一个帮助程序功能,可在需要时为自动setkey扩展此功能.这被设计为在链接时很有用.它还将接口统一到其他数据库供应商,以便您可以使用不同的数据库链接data.table. my_dt = db("SELECT * FROM eqtl") # to setkey use db("SELECT * FROM eqtl",key="mykeycol") 从包装手册中大量扩展的例子: jj_aggr = quote(list(amount=sum(amount),value=sum(value))) r <- db("sales",key="geog_code" # read fact table from db )[,eval(jj_aggr),keyby=c("geog_code","time_code") # aggr by geog_code and time_code ][,db(.SD) # write to db,auto.table.name ][,db("geography",key="geog_code" # read lookup geography dim from db )[.SD # left join geography ][,keyby=c("time_code","geog_region_name")] # aggr ][,auto.table.name ][,db("time",key="time_code" # read lookup time dim from db )[.SD # left join time ][,keyby=c("geog_region_name","time_month_code","time_month_name")] # aggr ][,auto.table.name ] 它将从多个数据库,连接,聚合中读取数据,将中间结果保存到多个数据库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |