从Postgresql将大数据加载到R data.table

时间:2015-03-29 11:08:03

标签: r postgresql dataframe data.table

我将数据存储在Postgresql服务器中。我想加载一个包含15mil行到data.framedata.table

的表格

我使用RPostgreSQL加载数据。

library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, ...)

# Select data from a table
system.time(
df <- dbGetQuery(con, "SELECT * FROM 15mil_rows_table")
)

将数据从DB加载到df需要 20分钟。我使用的是具有 60GB ram和16 Core CPU

的谷歌云服务器

我该怎么做才能减少加载时间?

2 个答案:

答案 0 :(得分:3)

不确定这是否会减少加载时间,因为它可以减少加载时间,因为这两个过程都具有很高的性能效率。你可以留下关于修整的评论。

  1. 使用bash run psql作为转储表到csv:
  2. COPY 15mil_rows_table TO '/path/15mil_rows_table.csv' DELIMITER ',' CSV HEADER;
    
      R中的
    1. 只是畏惧它:
    2. library(data.table)
      DT <- fread("/path/15mil_rows_table.csv")
      

答案 1 :(得分:2)

我使用@Jan Gorecki的方法和zip数据来节省内存。

1-转储表到csv

psql -h localhost -U user -d 'database' -c "COPY 15mil_rows_table TO stdout DELIMITER ',' CSV HEADER" | gzip > 15mil_rows_table.csv.gz &

2-在R

中加载数据
DT <- fread('zcat 15mil_rows_table.csv.gz')