Gast
#5723687
Hi Leute, hat jemand von euch etwas tiefergehendes PostgreSQL-Wissen ? Ich komme da nach über 12 Jahren Pause wieder rein und hab da eine vorgefertigte Datenbank einer Software, die sich ein wenig zickig anstellt, wenn es darum geht Bilddateien herauszurücken. Ich erspar euch mal das Lamento üder die Hintergründe, aber ich brauche quasi die in der DB vorhandenen Bilddateien als Bytearray wieder ganz normal als Bild ausgegeben mit verändertem Dateinamen. Mit Copy lässt sich da ja schön was machen, also einfach per shell psql -c "COPY Bla To Blubb" | xxd neuer Dateiname Das Bytearray da rausholen und den entstandenen HEX-Dump mit xxd wieder zu einer gültigen Datei zusammen bauen. Das SQL, um die Bilddaten überhaput zu bekommen und die Zuordnung, bzw. Dateinamen und Bildtyp ist etwas komplexer, habe ich aber schon einer verschachtelten SQL hinbekommen. Ich will so wenig wie möglich über die Shell machen, das hat gewisse Gründe, dass die Operation auf einem Produktiven DB-Server möglichst einfach handhabbar sein soll.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Am geilsten fände ich das ja, wenn ich das obige SQL nochmal in ein COPY TO wrappen könnte und dann alles in eine PicExport.sql packen könnte, dann später per Cron einfach nur noch psql < PicExport.sql | xxd Ausgabepfad oder so benutzen könnte. Problem beim reinen COPY-Befehl ist, dass der einzeln, direkt pro Datensatz funktioniert. Aber ich kann dem Befehl wohl NUR das Bytea/Blob mitgeben, keine Informationen über andere Spalten, mit denen ich mir meinen neuen Dateinamen zusammensetzen könnte. Ein anderer Ansatz ist, eine Textdatei mit lauter COPYs zu erzeugen und dann per Shell auszuführen ... das finde ich extrem unsexy und zusammengespaxt. Jemand ne Idee ? THX und Gruß