我将数据存储在Postgresql服务器中。我想加载一个包含15mil行到data.frame
或data.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
的谷歌云服务器我该怎么做才能减少加载时间?
答案 0 :(得分:3)
不确定这是否会减少加载时间,因为它可以减少加载时间,因为这两个过程都具有很高的性能效率。你可以留下关于修整的评论。
psql
作为转储表到csv:
COPY 15mil_rows_table TO '/path/15mil_rows_table.csv' DELIMITER ',' CSV HEADER;
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')