Domanda

Sto indagando i database delle colonne orientata e mi sono imbattuto Vertica.

La mia necessità è quella di alimentare il database di Vertica dal codice C. Non riesco a catturare queste informazioni da Vertica: Mi è stato detto di utilizzare il comando "copia" "VSQL" e. Tutto quello che voglio è un problema dichiarazioni INSERT al mio database di Vertica.

Può questo essere fatto?

Per esempio, in PostgreSQL si può fare "SQL embedded" collegando la biblioteca ecpg Postgres al C binario. Non ho idea se esiste tale cosa per Vertica, e non conosco nessun altro modo.

Tutte le idee?

È stato utile?

Soluzione

Vertica include un driver ODBC per C.

Leggi "Programmatore di> Guida Vertica client Biblioteche> Programmazione Applicazioni ODBC client"

Questa sezione illustra la procedura per la configurazione del ODBC Vertica conducente. Spiega inoltre come utilizzare l'API ODBC per connettersi a Vertica nelle proprie applicazioni client.

Altri suggerimenti

Sono disponibili due opzioni veramente: È possibile creare un file delimitato con i vostri dati, come il seguente:

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

E 'possibile quindi caricare che in Vertica utilizzando il comando COPY e VSQL. Se si dispone dei diritti di superutente del database, è possibile caricare il file direttamente, utilizzando:

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

Omettere -w se si vuole entrare conservare la password fuori della vostra storia bash e inseriscilo all'avvio del programma. Se non si dispone di diritti di database di superutente, è ancora possibile gatto il file in VSQL e ottenere i dati da STDIN - abbastanza perché Vertica impedisce il caricamento dei dati da un file senza privilegi di supervisore, ma vi permetterà di qualsiasi tubo utente è in via di gatto , non ho idea, ma lo si può fare nel seguente modo:

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

In alternativa, se si dispone di un gruppo di istruzioni di inserimento individuali in un file, separate da un punto e virgola, si può semplicemente eseguire il file tramite VSQL, come segue:

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

Ma se si sta facendo più di 1000 righe, si suppone che il caricamento di massa utilizzando un file delimitato ad essere molto più veloce.

Speranza che aiuta!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top