Informix: Wie die Tabelleninhalte und Spaltennamen erhalten mit dbaccess?
Frage
Angenommen, ich habe:
- eine Informix-Datenbank mit dem Namen "meine_datenbank"
- eine Tabelle "my_table" mit den Spalten "col_1", "col_2" und "col_3" genannt:
kann ich den Inhalt der Tabelle extrahiert, indem ein Erstellen my_table.sql Skript wie:
unload to "my_table.txt"
select * from my_table;
und dbaccess von der Kommandozeile aufrufen:
dbaccess my_database my_table.sql
Dies wird produziert die my_table.txt Datei mit Inhalten wie:
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
Nun, was muss ich tun, wenn ich die Spaltennamen in der my_table.txt erhalten wollen? Wie:
col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
Lösung
Keine der Standard Informix-Tool stellt die Spaltennamen an der Spitze der Ausgabe, wie Sie wollen.
Das Programm SQLCMD (nicht der Microsoft Neuling - das Original, das von dem IIUG Software-Archiv ) hat die Fähigkeit, das zu tun; Verwenden Sie die -H
Option für die Spaltenüberschriften (und -T
die Spaltentypen zu bekommen).
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 können auch CSV-Ausgabe tun, wenn das ist, was Sie brauchen (aber - Fehler - es nicht formatiert werden die Spaltennamen oder Spaltentypen Linien korrekt).
Andere Tipps
Warum Sie verwenden dbschema nicht?
Um Schema einer Tabelle zu erhalten (ohne Parameter -t alle Datenbank zeigen)
dbschema -d [DBName] -t [DBTable] > file.sql
Um das Schema eines gespeicherten Prozedur erhalten
dbschema -d [DBName] -f [SPName] > file.sql
Gefunden eine einfachere Lösung. Legen Sie die Header in einer Datei sagen header.txt
(es wird nur eine einzige Zeile „col_1|col_2|col_3
“ enthalten), dann zu kombinieren, um die Header-Datei und die Ausgabedatei Lauf:
cat header.txt my_table.txt > my_table_wth_head.txt