2017-05-02 1 views
0

한 번에 수천 개의 행만 읽을 수있는 dbReadTable 방법이 있습니까?
예를 들어 필자는 600 만 행의 Postgres 데이터베이스에서 dtable을 (필요에 따라) 읽으려고합니다. dtable 전체를 읽으려고 할 때 RStudio는 결국 멈추거나 끝나지 않습니다.
말 1 - 10000 행을 읽은 다음 100,001-200,000 행을 읽은 다음 200,001-300,000 행을 읽도록 지정할 수 있습니까?
프로세스를 신속하게 처리 할 수 ​​있도록 읽을 열을 지정하는 것에 익숙하므로 걱정할 필요가 없습니다.거대한 크기의 PostgreSQL db에서 dbReadTable을 사용하는 방법

+1

당신은 ['LIMIT'과'OFFSET'] (https로 SQL에서이 작업을 수행 할 필요가 /postgresql.org/docs/9.6/static/queries-limit.html). – r2evans

답변

0

는 @ r2evans에서 알 수 있듯이, 10 행마다 테이블을 슬라이스 쿼리에서 읽을 반복 dbGetQuery() 통화와 SQL을 실행 해보십시오 : 그러나

# VECTOR OF 60 SQL STATEMENTS TO QUERY 100,000 ROWS SKIPPING 100000 EACH TIME 
sqls <- paste0("SELECT col1, col2, col3, col4, col5 FROM mytable LIMIT 100000 OFFSET ", 
       seq(0, 5900000, by=100000)) 

# ROW BIND 60 DATASETS OF 100,000 ROWS 
finaldf <- do.call(rbind, lapply(sqls, function(s) dbGetQuery(conn, s)) 

,이 do.call가 매우 느리고에 광범위 할 수 있습니다 가정 운영. 포스트 그레스에서 검색 dataframes의 목록 결박 행 타사 패키지 (plyr, dplyrdata.table) 고려 :/:

postgresdfs <- lapply(sqls, function(s) dbGetQuery(conn, s)) 

plyr::rbind.fill(postgresdfs)  

plyr::ldply(postgresdfs, data.frame) 

dplyr::bind_rows(postgresdfs) 

data.table::rbindlist(postgresdfs) 
관련 문제