![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Twilo, 29. 11. 2007, 23:12
Hallo,
ich benötige von einer Tabelle jeweils alle Spaltennamen, jedoch nicht folgende "gueltigab", "ungueltigab", "zuletzt_geaendert" und "eingetragen"
sortiert soll dann nach Spalte1, Spalte2, Spalte3, SpalteN.
lässt sich dieses Vorhaben mit der Bash realisieren?
mit den Befehlpsql -h new -d dgb_rtest2 -U dgb -c "SELECT attname FROM pg_attribute, pg_class WHERE attrelid = pg_class.oid AND relname='adresse' AND attnum > 0 AND attname not in ('gueltigab', 'ungueltigab', 'zuletzt_geaendert' ,'eingetragen');"
erhalte ich alle Spalten die ich brauche, leider jedoch Zeilenweise
also:
Spalte1
Spalte2
SpalteN
ich brauche die Ausgabe jedoch wie folgt Spalte1, Spalte2, Spalte3 - diese Ausgabe könnte ich dann statt den 3 Fragezeichen verwenden
das ganze möchte ich dann wie folgt verwendenTABLES='tabelle1 tabelle2 tabelle3 tabelleN'
function xyz(){
for table in $TABLES
do
psql -h ${DBHOST} -d ${DBNAME} -U ${DBUSER} -c "SELECT ??? FROM ${table} ORDER BY ???;" > /tmp/${table}.txt
done
}
FreeBSD 6.2
Postgresql 7.4.13
Bash 3.1.17(0)-release (i386-portbld-freebsd6.2)
mfg
Twilo
--
Farbtabelle
Die folgende Nachricht zum Thema stammt von: Ilja, 30. 11. 2007, 07:29
yo,
mir fallen zwei möglichkeiten ein, entweder du benutzt die aggregatfunktion ähnlich dem group_concat von mysql. in oracle habe ich sie mir "gebastelt", keine ahnung ob das auch unter postgre geht.
ober aber du klebst die einzelnen zeilen mit den jeweiligen spaltennamen in deiner funktion aneinander (concat), bevor du die ausgabe machst.
Ilja
Die folgende Nachricht zum Thema stammt von: Twilo, 30. 11. 2007, 15:30
Hallo,
»» mir fallen zwei möglichkeiten ein, entweder du benutzt die aggregatfunktion ähnlich dem group_concat von mysql. in oracle habe ich sie mir "gebastelt", keine ahnung ob das auch unter postgre geht.
»»
»» ober aber du klebst die einzelnen zeilen mit den jeweiligen spaltennamen in deiner funktion aneinander (concat), bevor du die ausgabe machst.
ich hab es jetzt erst einmal wie folgt gelöstfunction xyz(){
for table in $TABLES
do
spalten=`psql -h ${DBHOST} -d ${DBNAME} -U ${DBUSER} -c "SELECT array_to_string( array( SELECT attname FROM pg_attribute, pg_class WHERE attrelid = pg_class.oid AND relname='${table}' AND attnum > 0 AND attname not in ('gueltigab', 'ungueltigab', 'zuletzt_geaendert' ,'eingetragen') ), ', ' )" |grep ,`
psql -h ${DBHOST} -d ${DBNAME} -U ${DBUSER} -c "SELECT ${spalten} FROM ${table} ORDER BY ${spalten};" > /tmp/${table}.txt
done
}
optimal wäre es, wenn ich die Spaltenabfrage im unteren SQL-Statement mit einbauen könnte.
mfg
Twilo
--
Farbtabelle
© 1998-2006
Impressum, Software: Classic Forum