한 번에 수천 개의 행만 읽을 수있는 dbReadTable 방법이 있습니까?
예를 들어 필자는 600 만 행의 Postgres 데이터베이스에서 dtable을 (필요에 따라) 읽으려고합니다. dtable 전체를 읽으려고 할 때 RStudio는 결국 멈추거나 끝나지 않습니다.
말 1 - 10000 행을 읽은 다음 100,001-200,000 행을 읽은 다음 200,001-300,000 행을 읽도록 지정할 수 있습니까?
프로세스를 신속하게 처리 할 수 있도록 읽을 열을 지정하는 것에 익숙하므로 걱정할 필요가 없습니다.거대한 크기의 PostgreSQL db에서 dbReadTable을 사용하는 방법
0
A
답변
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
, dplyr
을 data.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)
당신은 ['LIMIT'과'OFFSET'] (https로 SQL에서이 작업을 수행 할 필요가 /postgresql.org/docs/9.6/static/queries-limit.html). – r2evans