Frage

Ich untersuche spaltenorientierte Datenbanken und stieß auf Vertica.

Ich muss die Vertica -Datenbank aus C -Code füttern. Es gelingt mir nicht, diese Informationen von Vertica zu greifen: Mir wurde gesagt, dass ich "VSQL" und den Befehl "Kopie" verwenden soll. Alles was ich will ist ein Problem INSERT Aussagen zu meiner Vertica -Datenbank.

Kann das getan werden?

Zum Beispiel können Sie in Postgresql "eingebettete SQL" durchführen, indem Sie die Postgres verknüpfen ecpg Bibliothek zu Ihrem C Binary. Ich habe keine Ahnung, ob es für Vertica so etwas gibt, und ich weiß keinen anderen Weg.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Vertica enthält einen ODBC -Treiber für C.

Lesen Sie "Programmierer> Handbuch Vertica Client -Bibliotheken> Programmieren von ODBC -Clientanwendungen".

In diesem Abschnitt wird der Prozess zum Konfigurieren des Vertica ODBC -Treibers beschrieben. Außerdem wird erläutert, wie die ODBC -API verwendet wird, um eine Verbindung zu Vertica in Ihren eigenen Client -Anwendungen herzustellen.

Andere Tipps

Sie haben wirklich zwei Optionen: Sie können eine abgrenzende Datei mit Ihren Daten erstellen, wie die folgenden:

row1col1data,row1col2data,row1col3data,row1col4data
row2col1data,row2col2data,row2col3data,row2col4data
row3col1data,row3col2data,row3col3data,row3col4data

Sie können das dann mit dem Befehl copy und vSQL in Vertica laden. Wenn Sie über Datenbank -Superuser -Rechte verfügen, können Sie die Datei direkt mit:

vsql -U <username> -w <password> YOURDATABASENAME -c "COPY yourtablename (col1name, col2name, col3name, col4name) FROM 'yourdelimitedfile' DELIMITER ','"

Auslassen Sie -W, wenn Sie eingeben möchten, wenn Sie das Passwort aus Ihrem Bash -Verlauf eingeben und es beim Start des Programms eingeben möchten. Wenn Sie keine Datenbank -Superuser -Rechte haben, können Sie die Datei immer noch in VSQL erfassen und die Daten von STDIN abrufen. Warum vertica Sie daran hindert Ich habe keine Ahnung, aber Sie können es wie folgt tun:

cat yourdelimitedfile | vsql -U <username> -w <password> YOURDATABASENAME -c "COPY yourtablename (col1name, col2name, col3name, col4name) FROM STDIN DELIMITER ','"

Oder wenn Sie eine Reihe von einzelnen Einfügen in einer Datei haben, die von Semikolons getrennt sind, können Sie die Datei einfach wie folgt über VSQL ausführen:

vsql -U <username> -w <password> YOURDATABASENAME -f pathtoyoursqlfile

Wenn Sie jedoch mehr als 1000 Zeilen ausführen, soll das Laden der Volumen mit einer abgrenzten Datei viel schneller sein.

Ich hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top