Question

J'enquête sur les bases de données axées sur la colonne et suis tombé sur Vertica.

Mon besoin est d'alimenter la base de données Vertica à partir du code C. Je ne parviens pas à saisir ces informations de Vertica: On me dit d'utiliser « VSQL » et la commande « copie ». Tout ce que je veux est de INSERT question des déclarations à ma base de données Vertica.

Peut-on faire?

Par exemple, dans PostgreSQL, vous pouvez le faire « Embedded SQL », en liant la bibliothèque ecpg Postgres à votre binaire C. Je ne sais pas si une telle chose existe pour Vertica, et je ne connais pas d'autre moyen.

Toutes les idées?

Était-ce utile?

La solution

Vertica comprend un pilote ODBC C.

Lire "programmeur de> Guide Vertica bibliothèques client> Programmation d'applications ODBC client"

Cette section détaille le processus de configuration du Vertica ODBC chauffeur. Il explique également comment utiliser l'API ODBC pour se connecter à Vertica dans vos propres applications client.

Autres conseils

Vous avez deux options vraiment: Vous pouvez créer un fichier délimité avec vos données, comme suit:

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

Vous pouvez alors recharger dans Vertica en utilisant la commande COPY et VSQL. Si vous avez la base de données des droits de super-utilisateur, vous pouvez charger le fichier directement, en utilisant:

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

Omettre -w si vous voulez entrer garder le mot de passe de votre histoire bash et entrez au démarrage du programme. Si vous ne disposez pas la base de données des droits de super-utilisateur, vous pouvez toujours le chat le fichier dans VSQL et obtenir les données de STDIN - bien pourquoi Vertica vous empêche de charger des données à partir d'un fichier sans droits de super-utilisateur, mais laisser un tuyau utilisateur dans via chat , je ne sais pas, mais vous pouvez le faire comme suit:

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

Ou, si vous avez un tas d'instructions d'insertion individuels dans un fichier, séparés par des points-virgules, vous pouvez simplement exécuter le fichier par VSQL, comme suit:

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

Mais si vous faites plus de 1000 lignes, le chargement en vrac à l'aide d'un fichier délimité est censé être beaucoup plus rapide.

L'espoir qui aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top