2014-06-05 6 views
10

Ich habe meinen ODBC-Treiber eingerichtet, so dass MS Excel die Daten in eine Kalkulationstabelle importieren kann.ODBC funktioniert gut in MS Excel, aber nicht in R

Allerdings, wenn ich versuche, die Verbindung mit R zu etablieren, mit

ch <- odbcConnect(leprosyDHISdb, uid = leprosyDHISid, pwd = leprosyDHISpw) 

Dann erhalte ich die Fehler

Warning messages: 
1: In odbcDriverConnect("DSN=dhis2;UID=dhis2_viewer;PWD=*********") : 
    [RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
2: In odbcDriverConnect("DSN=dhis2;UID=dhis2_viewer;PWD=*********") : 
    ODBC connection failed 

Was könnte odbc für R machen scheitern, aber nicht für Excel?

Antwort

1

Nicht sicher, ob dies der richtige Weg ist, aber das hat für mich funktioniert.

  1. Gehen Sie zu der Tabelle in Excel mit den Daten importiert.
  2. Klicken Sie auf Daten -> Verbindungen
  3. Klicken Sie doppelt auf die Abfrage
  4. Klicken Sie auf der Registerkarte Definition
  5. Kopieren Sie die Verbindungszeichenfolge und fügen Sie ihn in R in der odbcDriverConnect Funktion:

    myConn < - odbcDriverConnect ("DRIVER = SQL Server; SERVER = fooServer; UID = foo_viewer; PWD = 1pityDfoo!; APP = Microsoft Office 2010; WSID = foocomputername; DTS DATABASE = ")

  6. Sie auch den Befehl Text und fügen Sie ihn in R in der sqlQuery Funktion kopieren:

    mydata < - sqlquery (myConn" SELECT DTS.dts_id, DTS.dts_no, DTS.unit_code, DTS.originator, DTS.doc_type_id, DTS.doc_date, DTS.subject, DTS.remarks, DTS.status, DTS.is_confidential, DTS.created_by, DTS.date_created, DTS .updated_by, DTS.date_updated, DTS.timestamp VON DTS.dbo.DTS DTS ")

6

Überprüfen Sie, ob Sie eine 32/64bit-Version von R verwenden, überprüfen Sie auch, ob Ihre ODBC-Verbindung 32/64bit ist.

für das Einrichten eines DSN 32bit mit Windows navigieren Sie zu folgendem Ordner C: \ Windows \ SysWOW64

für das Einrichten eines DSN 64bit mit Windows in den folgenden Ordner C navigieren: \ Windows \ System32

EDIT: Der folgende Blog ist ein ausgezeichneter Führer Sie vielleicht nützlich finden

http://sandymuspratt.blogspot.co.uk/2013/01/getting-access-data-into-r.html

1

Versuchen odbcDri mit verConnect und eine Verbindungszeichenfolge.

ch <- odbcDriverConnect("Driver={Oracle in OraClient11g_home1};Dbq=leprosyDHISdb;Uid=leprosyDHISid;Pwd=leprosyDHISpw;") 

Möglicherweise müssen https://www.connectionstrings.com/ für Ihre spezifische Verbindungszeichenfolge überprüfen. This is the one I used.

+0

Danke, @Phil. Leider scheint das immer noch nicht zu funktionieren. – Tom

+0

Sobald ich den Fahrer richtig verstanden habe, hat es funktioniert. Danke @Phil! – Tom

2

Ich hatte das gleiche Problem in letzter Zeit. So habe ich es gelöst:

1) Gehen Sie zu Seite: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html und wählen Sie das entsprechende Betriebssystem und die Version für Sie.

2) auf den Link unter dem Paket-Download mit "Instant Client Package - ODBC: Zusätzliche Bibliotheken zu ermöglichen, ODBC-Anwendungen"

3) Extrahieren Sie die Dateien unter C-Laufwerk als C: \ instantclient_12_1 und laufen odbc_install.exe in es.

4) Versuchen Sie es erneut.

2

Diese Behelfslösung mir geholfen:

  1. Zum ODB Datenquellen-Administrator ([Win] + ODBC ...)
  2. neue DNS hinzufügen (spielt keine Rolle wirklich, welche Art, Benutzer-DNS zu halten); Verweisen Sie die Quelle auf die gewünschte Datenbank und benennen Sie den neuen DNS (zB dbAdHocForR)
  3. Gehen Sie zurück zu R, um den Kanal zu definieren (rufen Sie einfach das DNS ohne zusätzliche Parameter auf): ch < - odbcConnect ("SQL Server")
  4. definieren Sie die SQL-Abfrage mit dem Kanal: q1 < - sqlquery (ch "wählen Sie oben 1000 * von dbo.RTestTable")
Verwandte Themen