2017-09-16 23 views
3

Neu bei R und Probleme bei der Verbindung mit Access-Datenbanken haben. Dies ist der Code, den ich leite (RODBC Paket manuell vor Lauf geladen):So stellen Sie eine Verbindung zur .accdb-Datenbank her R

library(RDOBC) 

conn <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='C:/db/dbNorthwind.accdb'") 
subset(sqlTables(conn), TABLE_TYPE == "TABLE") 
df <- sqlFetch(conn, "tblCustomer") 
df # 

ich die Fehlermeldung:

Error in sqlTables(conn) : first argument is not an open RODBC channel.

irgendwelche Tipps wissen, wie zu beheben?

Umgebung:

  • 64-Bit-Windows-
  • 32-Bit-MS Access 2013
  • 64-Bit-Microsoft R öffnen

Antwort

3

Der Code, den Sie verwenden in Ordnung ist, Ihre Setup ist nicht.

Sie müssen entweder 64-Bit R und 64-Bit MS Access oder 32-Bit R und 32-Bit MS Access verwenden. Sie können jedoch versuchen, 64-Bit Access Database Engine zu installieren, gefunden here (2016 version) oder here (2010 version).

Ich hatte unterschiedliche Ergebnisse mit der Installation sowohl der Vollversion von Access und der Datenbank-Engine (derzeit erhalten Access 32-Bits 2016, und konnte Access-Datenbank-Engine 64-Bit 2016 nicht installieren, könnte aber die 2010-Version von installieren Verwenden des Befehls/passiv für das Installationsprogramm).

Weitere Informationen zur Installation der 32-Bit-Vollversion und der 64-Bit-Datenbank-Engine auf einem Computer finden Sie unter this blog. Aber wie bereits erwähnt, können die Ergebnisse variieren.

+0

nur bestätigen: Wollen Sie damit sagen, dass das Installationsprogramm für den [Microsoft Access-Datenbank-Engine 2016 Redistributable] (https://www.microsoft.com/en-us/download/details.aspx?id=54920) hat die Unterstützung für den '/ passive' Schalter fallengelassen und es ist nicht mehr möglich, sowohl 64-Bit- als auch 32-Bit-Versionen von ACE für 2016 auf demselben Rechner zu erzwingen? –

+0

@GordThompson Ich habe die genauen Angaben nicht gefunden, weil ich sie nicht in kurzer Zeit finden konnte. Ich habe nur gesagt, dass ich versucht habe, dieses Installationsprogramm mit dem '/ passiv'-Schalter zu verwenden und eine Fehlermeldung erhalten habe, dass ich es nicht installieren konnte, weil ich bereits 32-Bit-Office hatte, also ging ich einfach für die 2010-Variante es gibt nicht so viele Unterschiede, soweit ich weiß –

+0

Okay, danke. Es würde mich nicht wundern, wenn Microsoft entschieden hätte, dass zu viele Leute ihre Office-Installationen durch Verwendung des '/ passiv'-Schalters durchbrachen und sie einfach ablegten. Ich habe immer behauptet, dass es sowieso eine "Bad Idea (TM)" ist. Warum würden sie sich dann die Mühe machen, den Installer zu codieren, um das '/ passive' Verhalten standardmäßig zu verhindern? –

1

Ich weiß nicht viel über Datenbankimport, aber ich werde versuchen, Ihnen zu helfen, indem ich Ihnen sage, was ich normalerweise mache. Das erste, was Sie tun müssen, ist zu verstehen, ob Sie den DSN haben, um auf die Datenbank zugreifen zu können. Sie können es tun, indem Sie auf Start klicken und zu ODBC-Datenquelle gehen. Wenn Sie dort im Fenster "UserDSN" sind, überprüfen Sie, ob es Ihre Datei gibt. Wenn es nicht dort ist, müssen Sie es nur hinzufügen, indem Sie auf "Hinzufügen" klicken und dann suchen Sie nach dem Treiber, um Ihre Datei zu lesen, in Ihrem Fall ist .accdb. Falls Sie nicht über den Treiber haben können Sie hier herunterladen:

http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=e

Nachdem Sie Sie DSN erstellt haben, dann sind Sie in R gehen und schreiben Sie diese paar Zeilen Code. Hier werde ich ein Beispiel schreiben. Ich habe eine Access-Datei heruntergeladen:

https://www.599cd.com/access/studentdatabases/

Access-Datei: Zugriff Anfänger 1

Die in RI eingegeben haben:

library(RODBC) 


odbcDS <- "PCResale Customer Database" 

tmp <- odbcConnect(dsn = odbcDS) 

df <- sqlFetch(tmp, "CustomerT") 

Hoffnung, dass dies keine Hilfe ist,

Ciao!

+0

Danke. Versucht dies auch, würde wahrscheinlich funktionieren, wenn meine Umgebung richtig eingerichtet wurde. ("... FEHLER: Status IM014, Code 0, Nachricht [Microsoft] [ODBC Driver Manager] Der angegebene DSN enthält eine Architekturkonflikt zwischen dem Treiber und der Anwendung ...") – HerrSober

0

Das funktionierte gut für mich.

library(RODBC) 

# for 32 bit windows 
# Connect to Access db 
# channel <- odbcConnectAccess("C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb") 

# Get data 
# data <- sqlQuery(channel , paste ("select * from Name_of_table_in_my_database")) 


# for 64 bit windows 
channel <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb") 

data <- sqlQuery(channel , paste ("select * from CUSTOMERS")) 

odbcCloseAll() 
Verwandte Themen