Pregunta

Estoy investigando bases de datos orientadas a columnas y me encontré con Vértica.

Mi necesidad es alimentar la base de datos Vértica desde el código C. No tengo éxito en obtener esta información de Vertica: se me dice que use "VSQL" y el comando "Copiar". Todo lo que quiero es un problema INSERT declaraciones a mi base de datos Vértica.

Se puede hacer esto?

Por ejemplo, en PostgreSQL puede hacer "SQL incrustado" vinculando el Postgres ecpg Biblioteca a su b binario. No tengo idea de si tal cosa existe para Vértica, y no conozco de otra manera.

¿Algunas ideas?

¿Fue útil?

Solución

Vértica incluye un controlador ODBC para C.

Lea "Programador> Guía Bibliotecas de clientes de Vertica> Programación de aplicaciones de clientes ODBC"

Esta sección detalla el proceso para configurar el controlador Vertica ODBC. También explica cómo usar la API ODBC para conectarse a Vértica en sus propias aplicaciones de clientes.

Otros consejos

Realmente tiene dos opciones: puede crear un archivo delimitado con sus datos, como lo siguiente:

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

Luego puede cargarlo en Vértica usando el comando COPY y VSQL. Si tiene derechos de superusor de la base de datos, puede cargar el archivo directamente, utilizando:

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

Omitir -w si desea ingresar Mantenga la contraseña fuera de su historial de bash e ingrese cuando comience el programa. Si no tiene derechos de superusor de base de datos, aún puede atender el archivo en VSQL y obtener los datos de Stdin, por qué Vertica le impide cargar datos de un archivo sin derechos de superusor, pero permitirá que cualquier usuario lo vaya a través de CAT , No tengo idea, pero puedes hacerlo de la siguiente manera:

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

O, si tiene un montón de declaraciones de inserción individuales en un archivo, separadas por Semicolons, simplemente puede ejecutar el archivo a través de VSQL, de la siguiente manera:

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

Pero si está haciendo más de 1000 filas, se supone que la carga a granel usando un archivo delimitado es mucho más rápido.

¡Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top