Pracuję z bazą danych Oracle i lubię pobrać tabelę z 30 milionami rekordów.Przyspieszenie sqlFetch()
library(RODBC)
ch <- odbcConnect("test", uid="test_user",
pwd="test_pwd",
believeNRows=FALSE, readOnly=TRUE)
db <- sqlFetch(ch, "test_table")
Dla 1 miliona rekordów proces wymaga 1074,58 sekundy. Tym samym zajmuje to sporo czasu dla wszystkich 30 milionów rekordów. Czy istnieje możliwość przyspieszenia tego procesu?
Byłbym wdzięczny za każdą pomoc. Dzięki.
RODBC przeciwko Oracle jest szalony powolny. Zrzuć do lokalnego pliku csv na końcu bazy danych, prześlij przez udostępnianie plików sieciowych, a następnie załaduj do R za pomocą sqldf :: read.csv.sql. Zobacz: http://www.cerebralmastication.com/2009/11/loading-big-data-into-r/ – Hansi
Dzięki za link. Czy masz jakieś doświadczenie, czy pakiet "ROracle" jest lepszy pod względem wydajności? Dla mnie to naprawdę wydaje się sprzeczne z intuicją, aby utworzyć zrzut. – majom
@majom W pracy, muszę pisać zapytania przeciwko hurtowni danych Oracle, a pobieranie danych do R jest bardzo powolne. Nigdy nie udało mi się uruchomić ROraclea. Zamiast sqlFetch staram się pisać ukierunkowane zapytania, aby uzyskać potrzebne dane. Minimalizuje to transfer danych (nieco) i wykorzystuje prędkość Oracle w bazie danych. Nie pracuję z danymi tak dużymi jak twoje, więc mój proces odpowiada moim potrzebom (na razie). Nie idealny, ale działa. – Btibert3