2014-06-05 14 views
10

Ustawiłem sterownik ODBC, aby MS Excel mógł zaimportować dane do arkusza kalkulacyjnego.ODBC działa poprawnie w MS Excel, ale nie w R

Jednak przy próbie nawiązania połączenia z R, używając

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

Następnie pojawia się błąd

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 

Co może zrobić ODBC nie dla R, ale nie dla programu Excel?

Odpowiedz

1

Nie jestem pewien, czy to jest najodpowiedniejszy sposób, aby to osiągnąć, ale to działało dla mnie.

  1. Przejdź do arkusza kalkulacyjnego w programie Excel z zaimportowanymi danymi.
  2. Kliknij na dane -> Połączenia
  3. Dwukrotnie kliknij na zapytania
  4. Kliknij na zakładce Definicja
  5. skopiować ciąg połączenia i wkleić go do R wewnątrz odbcDriverConnect funkcję:

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

  6. Można również skopiować tekst polecenia i wklej go do R wewnątrz sqlQuery funkcję:

    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 OD DTS.dbo.DTS DTS ")

6

Sprawdź, czy używasz 32/64-bitowej wersji R, sprawdź również, czy twoje połączenie ODBC ma 32/64-bitowe.

Aby skonfigurować DSN 32bit za pomocą okna przejdź do następującego folderu C: \ Windows \ SysWOW64

Aby skonfigurować DSN 64bit za pomocą okna przejdź do następującego folderu C: \ Windows \ System32

EDIT: Poniższy blog jest doskonałym przewodnikiem może się okazać przydatny

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

1

Spróbuj użyć odbcDri verConnect i ciąg połączenia.

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

Być może trzeba sprawdzić https://www.connectionstrings.com/ dla konkretnego ciągu połączenia. This is the one I used.

+0

Dzięki @Phil. Niestety, nadal nie działa. – Tom

+0

Kiedy już dostałem sterownik, zadziałało. Dzięki @Phil! – Tom

2

Niedawno miałem ten sam problem. Oto jak go rozwiązałem:

1) Przejdź do strony: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html i wybierz odpowiedni system operacyjny i wersję.

2) Pobierz pakiet używając linku pod "Instant Client Package - ODBC: dodatkowe biblioteki dla umożliwienia aplikacji ODBC"

3) wyodrębnić pliki w folderze C dysku C: \ instantclient_12_1 i uruchomić odbc_install.exe w to.

4) Spróbuj połączyć ponownie.

2

To obejście pomógł mi:

  1. idź do ODB Data Source Administrator ([Win] + ODBC ...)
  2. Dodaj nowy serwer DNS (nie ma znaczenia, jakiego typu, zachowując DNS użytkownika); wskaż źródło do żądanej bazy danych i nazwij nowy DNS (np. dbAdHocForR)
  3. Powróć do R, aby zdefiniować kanał (po prostu wywołaj DNS bez dodatkowych parametrów): ch < - odbcConnect ("SQL Server")
  4. Zdefiniuj zapytanie SQL za pomocą kanału: Q1 < - sqlquery (CH "wybierz top 1000 * od dbo.RTestTable")