
Zitat von
mtsB
Moin,
ich m�chte eine Datenbankroutine schreiben dir mir eine Spalte einer Zeile ausliest und den Inhalt in eine Datei schreibt. Anschlie�end soll die Spalte mit dem Dateinamen bef�llt werden.
Der Dateiname soll sich aus den anderen Spaltennamen der entsprechenden Zeile zusammensetzen. Meine Tabelle sieht so aus:
id | cusid | archiv | created | createdby | modified | modifiedby | probelauf | typ | protokoll | basis_cusid |
Output-Dateiname: cusid_basis_cusid_created_typ_id.zip
Bsp: 12835_180_2010-06-10-11:23:06.254_PERSONAL_193356.zip
Wie ich das kopieren bewerkstellige wei� ich, ich habe nur keine Ahnung wie ich den Dateinamen dynamisch halten kann, da dies f�r 2000 Zeilen ausgef�hrt werden muss.
Hoffe ihr k�nnt mir weiterhelfen. Danke!
Hast Du 9.0 oder höher?
Code:
test=# select * from foo;
id | file
----+--------
1 | datei1
2 | datei2
3 | datei3
(3 rows)
test=# do $$ declare i text; begin for i in select file from foo loop execute 'copy (select id from foo where file = ' || quote_literal(i) || ') to ' || quote_literal('/tmp/' || i); end loop; end; $$ language plpgsql;
DO Falls noch kein 9.0: baue Dir eine Funktion, die dynamisch den EXECUTE-String zusammenbaut, und führe das aus. In 9.0 geht das als Inliner, siehe Beispiel.
Andreas
Lesezeichen