加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以从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
                    ]

它将从多个数据库,连接,聚合中读取数据,将中间结果保存到多个数据库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读