ODBC funziona bene in Ms Excel, ma non in r
Domanda
Ho configurato il driver ODBC in modo che MS Excel possa importare i dati in un foglio di calcolo solo bene.
Tuttavia, quando provo a stabilire la connessione con r, usando
ch <- odbcConnect(leprosyDHISdb, uid = leprosyDHISid, pwd = leprosyDHISpw)
.
Quindi ottengo l'errore
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
.
Cosa potrebbe rendere ODBC fallire per r, ma non per Excel?
Soluzione 3
Non sono sicuro se questo è il modo più corretto per farlo, ma questo funzionava per me.
- .
- Vai al foglio di calcolo in Excel con i dati importati.
- Fare clic su Dati -> Connessioni
- Fare doppio clic sulla query
- Fare clic sulla scheda Definizione
-
Copia la stringa di connessione e incollalo in R all'interno della funzione
odbcDriverConnect
:myconn <-odbcdriverconnect (driver driver= sql server; server= fooserver; uid= foo_viewer; pwd= 1pitydfoo !; app= Microsoft Office 2010; wsid= foocomputName; database= DTS ")
-
È anche possibile copiare il testo del comando e incollarlo in R all'interno della funzione
sqlQuery
:MyData <- SQLQuery (MyConn ", seleziona 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 da dts.dbo.dts dts ")
Altri suggerimenti
Controllare se si utilizza una versione da 32/64 bit di R, controllare anche se la connessione ODBC è 32/64 bit.
Per configurare un DSN a 32 bit utilizzando Windows navigare nella seguente cartella C: \ Windows \ Syswow64
Per configurare un DSN a 64 bit utilizzando Windows navigare nella seguente cartella C: \ Windows \ System32
Modifica: il seguente blog è una guida eccellente che potresti trovare utile
http://sandymuspratt.blogspot.co.uk/2013/01/getting-access-Data-into-R.html
Ho avuto lo stesso problema di recente.Ecco come ho risolto:
1) Vai alla pagina: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html e seleziona il sistema operativo e la versione pertinente a te.
2) Scarica il pacchetto utilizzando il collegamento in "Pacchetto client istantaneo - ODBC: librerie aggiuntive per abilitare le applicazioni ODBC"
3) Estrai i file in crive c come c: \ istantanclient_12_1 ed eseguire odbc_install.exe in esso.
4) Prova a connetterti di nuovo.
Questo lavoro mi ha aiutato:
- .
- Vai all'Amministratore dell'origine dati ODB ([Win] + ODBC ...)
- Aggiungi nuovo DNS (non importa il tipo, mantenendo DNS dell'utente);Punta la fonte al DB desiderato e nominare il nuovo DNS (ad es. Dbadhocforr)
- Torna a r per definire il canale (basta chiamare il DNS w / o eventuali parametri aggiuntivi): CH <-ODBCCONNECT ("SQL Server")
- Definisci la query SQL utilizzando il canale: Q1 <- SQLQuery (CH ", selezionare Top 1000 * da dbo.rtesttable")
Prova a utilizzare OdbcDriverConnect e una stringa di connessione.
ch <- odbcDriverConnect("Driver={Oracle in OraClient11g_home1};Dbq=leprosyDHISdb;Uid=leprosyDHISid;Pwd=leprosyDHISpw;")
.
Potrebbe essere necessario controllare https://www.connectionstrings.com/ per la tua stringa di connessione specifica. Questo è quello che ho usato .