2011-08-18 25 views
14

Dokumentacja sugeruje, że jest to możliwe, ale nie jestem pewien, jak odczytać dane z Microsoft Access (nowy format .accdb) z tym pakietem do R (na Debianie GNU/Linux). Winieta mówi o sterownikach, ale nie do końca rozumiem, w jaki sposób mogę zobaczyć, które sterowniki są zainstalowane, aw szczególności, czy mam zainstalowany sterownik, aby uzyskać dostęp do tych plików .accdb.Jak odczytać dane z plików bazy danych Microsoft Access .accdb na R?

Jakiego kodu używasz do odczytu danych z plików .accdb? I proszę wskazać, na jakiej platformie jesteś i czy musisz zainstalować specjalny sterownik.

+0

O ile widziałem, nie ma obsługi ACE dostępnej na Linuksie, tylko Jet 4. Tak więc, potrzebujesz Format MDB zamiast formatu ACCDB, ale jestem programistą Access i użytkownikiem systemu Windows, więc mogłem go przeoczyć - ale nie pojawił się on na SO. –

Odpowiedz

4

Tytuł połączonej strony, RODBC: ODBC Database Access, może wprowadzać użytkowników w błąd. Dostęp nie oznacza MS Access; w tym tytule dostęp oznacza łączność. RODBC jest menedżerem ODBC dla R. Służy jako pośrednik do zapewnienia komunikacji między R i sterownikiem ODBC dla docelowej bazy danych. Tak więc dla systemu GNU/Linux nadal potrzebny jest sterownik ODBC dla plików bazy danych MS Access ... RODBC nie zapewnia takiego sterownika.

Jednak nie znam żadnych wolnych (jak w wolności i/lub piwa) sterowników ODBC MS Access dla systemu Linux. Easysoft sprzedaje one, ale nie jest tanie. Mogą być również oferty od innych dostawców; Nie patrzyłem.

Użycie komputera z systemem Windows może być łatwiejsze do wyeksportowania ACCDB do formatu, którego może używać R. Lub uruchom R on Windows zamiast Linux.

+0

Brakowało mi bitu "GNU/Linux". Masz rację - nie ma szans na Linuksa. – Patrick

+0

Cóż, widziałem takie rzeczy jak ten post, gdzie mają dostęp do plików .mdb: http://rforge.org/2009/08/07/open-access-mdb-file-with-rodbc/ Ale, rozumiem że w tym momencie potrzebuję sterownika Windows ... w rzeczywistości ta metoda odbcConnectAccess() wydaje się niedostępna w moim pakiecie rodbc ... thanx dla wskaźników! –

3

Będziesz potrzebować sterowników do połączenia Access z interfejsem ODBC. Powinny one należeć do twojego systemu, jeśli masz zainstalowany Access. Jeśli nie, pobierz Access Database Engine od Microsoft. Następnie utwórz połączenie danych w ODBC (może być konieczne uruchomienie wersji 32-bitowej c:\windows\sysWOW64\odbcad32.exe w przypadku systemu Windows 64-bitowego). Zauważ, że ta metoda nie działa na GNU/Linux. Środowiska wykonawcze są tylko dla systemu Windows, jak wspomniano w artykule o programie @HansUp poniżej.

Co do kodu, prawdopodobnie zaczniesz od odbcConnect(dsn, uid = "", pwd = "", ...), a dokumentacja może pomóc w szczegółach.

3

ODBC to system "podłącz i módl się" łączący różne cegły.

RODBC pozwala ci uzyskać coś od dostawcy ODBC do R. To, czego nadal potrzebujesz, to (z braku lepszego słowa) sterownik eksportujący ODBC danego systemu bazy danych. Którego potrzebujesz w swoim systemie operacyjnym --- więc myślę, że dzięki kombinacji Access-into-Linux nie masz szczęścia. Tylko dla systemu Windows.

Osób zdołało uzyskać dostęp do serwera SQL za pomocą sterowników FreeTDS (dla protokołu TDS będącego podstawą Sybase i poprzez wczesną licencję również MS-SQL), ale zwykle jest to walka, aby je uruchomić.

1

Alternatywą dla bezpośredniego dostępu do niego może być ułatwienie eksportu danych z MS Access. Przynajmniej najnowszy MS Access pozwala zapisać różne kroki eksportu. Następnie można dość szybko uruchomić eksport różnych zapytań/tabel.

Wiem, że to nie odpowiada na pytanie, ale może być obejściem problemu, jeśli nie zostanie uruchomiony program RODBC.

2
> library(RODBC) 
> db<-file.path("student.accdb") 
> channel<-odbcConnectAccess2007(db) 
> data<-sqlFetch(channel,"stud") 
> data 
    ID Name M1 M2 M3 M4 M5 Result 
1 7 Radha 85 65 92 50 62 Pass 
2 8 Reka 75 85 96 75 85 Pass 
+2

proszę również wyjaśnić swój kod. dzięki –

5

Aby zaimportować plik programu Microsoft Access post-2007 (Accdb) do R, można użyć pakietu RODBC.

Dla pliku .accdb o nazwie "foo.ACCDB”z poniższych tabelach,«Bar»i«bin», przechowywanych na pulpicie Johna Doe komputerze:

library(RODBC) #loads the RODBC package 
dta <- odbcConnectAccess2007("C:/Users/JohnDoe/Desktop/foo.accdb") #specifies the file path 
df1 <- sqlFetch(dta, "bar") #loads the table called 'bar' in the original Access file 
df2 <- sqlFetch(dta, "bin") #loads the table called 'bin' in the original Access file 
0

najlepsza metoda, która pracowała dla mnie

library(RODBC) 
datab<-file.path("Enroll.accdb") 
channel<-odbcConnectAccess2007(datab) 
table<-sqlFetch(channel,"2011") 

To pobrać dane z "2011" w pliku rejestracyjnym, ale kodowanie UTF nie działa z tym.

Powiązane problemy