Informix: Comment obtenir le contenu de la table et les noms de colonnes en utilisant dbaccess?
Question
Supposant je:
- une base de données Informix nommée "my_database"
- une table nommée "my_table" avec les colonnes "col_1", "col_2" et "col_3":
Je peux extraire le contenu de la table en créant un my_table.sql script comme:
unload to "my_table.txt"
select * from my_table;
et invoquant dbaccess de la ligne de commande:
dbaccess my_database my_table.sql
Cela produira my_table.txt fichier avec le contenu comme:
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
Maintenant, que dois-je faire si je veux obtenir les noms de colonnes dans la section my_table.txt ? Comme:
col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
La solution
Aucun des outils standard Informix mis les noms de colonnes en haut de la sortie que vous voulez.
Le SQLCMD du programme (et non le nouveau venu Microsoft - l'original, disponible à partir du IIUG Archive Software ) a la capacité de le faire; utilisez l'option -H
pour les en-têtes de colonnes (et -T
pour obtenir les types de colonnes).
sqlcmd -U -d my_database -t my_table -HT -o my_table.txt
sqlunload -d my_database -t my_table -HT -o my_table.txt
SQLCMD peut également faire sortie CSV si c'est ce dont vous avez besoin (mais - bug - il ne formate pas les noms de colonnes ou lignes types de colonnes correctement).
Autres conseils
Pourquoi ne pas utiliser dbschema?
Pour obtenir le schéma d'une table (sans paramètre -t afficher toutes les données)
dbschema -d [DBName] -t [DBTable] > file.sql
Pour obtenir le schéma d'une procédure stockée
dbschema -d [DBName] -f [SPName] > file.sql
Vous avez trouvé une solution plus facile. Placez les en-têtes dans un fichier par exemple header.txt
(il contiendra une seule ligne « col_1|col_2|col_3
») puis de combiner le fichier d'en-tête et votre fichier de sortie run:
cat header.txt my_table.txt > my_table_wth_head.txt