2013-06-24 6 views
5

Dies ist das erste Mal, dass ich mich mit Vertica verbinde. Ich bin bereits erfolgreich mit einer MySQL-Datenbank verbunden, indem ich die RODBC-Bibliothek benutzt habe.R und Vertica mit RODBC verbinden

Ich habe die Datenbank-Setup in vertica und ich installiert die Windows-64-Bit-ODBC-Treiber von https://my.vertica.com/download-community-edition/

Als ich vertica mit R zu verbinden versucht, erhalte ich die folgenden Fehler:

channel = odbcDriverConnect(connection = "Server=myserver.edu;Database=mydb;User=mydb;Password=password") 

Warning messages: 
1: In odbcDriverConnect(connection = "Server=myserver.edu;Database=mydb;User=mydb;Password=password") : 
[RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
2: In odbcDriverConnect(connection = "Server=myserver.edu;Database=mydb;User=mydb;Password=password") : 
ODBC connection failed 

Kann mir jemand sagen, wie ich das beheben kann? Oder gibt es andere Möglichkeiten, mit R eine Verbindung zu vertica herzustellen?

Antwort

11

Es kann nicht die schnellste sein, aber ich bevorzuge die Vertica JDBC-Treiber von R. Die ODBC-Treiber arbeiten ist ein wenig chaotisch über verschiedene Betriebssysteme. Wenn Sie bereits eine Java Runtime Environment (JRE) für andere Anwendungen installiert haben, ist dies relativ einfach.

Laden Sie die Vertica JDBC-Treiber für Ihre Vertica-Serverversion vom MyVertica-Portal herunter. Platzieren Sie den Treiber (eine .jar-Datei) an einem geeigneten Speicherort für Ihr Betriebssystem.

Installieren RJDBC in Ihren Arbeitsbereich:

install.packages("RJDBC",dep=TRUE) 

In Ihrem R-Skript, das RJDBC Modul laden und eine Instanz des Vertica-Treiber erstellen, die classPath Argument der Anpassung an den Standort und den Dateinamen des Treibers zeigen Sie heruntergeladen

library(RJDBC) 
vDriver <- JDBC(driverClass="com.vertica.jdbc.Driver", classPath="full\path\to\driver\vertica_jdbc_VERSION.jar") 

eine neue Verbindung des Treiber-Objekt, die Verbindung zu den Hosts, Benutzername und Passwort ersetzen:

vertica <- dbConnect(vDriver, "jdbc:vertica://host:5433/db", "username", "password") 

Dann SQL-Abfragen ausführen:

myframe = dbGetQuery(vertica, "select Address,City,State,ZipCode from MyTable") 
+2

Dank @bpanulla. Es funktionierte. Ich muss dazu eine kleine Korrektur hinzufügen. der vDriver sollte vDriver sein <- JDBC (driverClass = "com.vertica.jdbc.Driver", classPath = "Pfad \ zu \ driver \ vertica_VERSION_jdk_5.jar") – Jana

+0

Ahhh interessant. Ich verwende immer noch Vertica 5, vielleicht haben sie das Paket für neuere Versionen geändert. – bpanulla

+0

danke @bpanulla. Könnte ich sowieso eine tabulatorgetrennte Textdatei mit JDBC nach Vertica hochladen? – Jana

1

Sie haben in JDBC-Funktion doppelten Schrägstrich in der classPath arguement zu verwenden. zum Beispiel

vDriver <- JDBC(driverClass="com.vertica.jdbc.Driver", 
classPath="C:\\Program Files\\Vertica Systems\\JDBC\\vertica-jdk5-6.1.2-0.jar") 

für mich gearbeitet, während nur die Route fehlgeschlagen Kopieren und Einfügen.