akretschmer
Datenbank-Guru
- Beiträge
- 10.371
Hi,
mein Kunde suchte sowas und die Recherche im Internet ist nicht wirklich erhellend.
Daher kurze Lösung:
Habe nun also 2 identische PDF's gespeichert.
Jetzt auf der Command-Line:
Ich blase das also aus psql als Base64-codierten Kram raus, pipe es durch base64 (ein Tool) und dekodiere es wieder zurück in Hex und speicher das als Datei. md5sum ist gleich der Ursprungsdatei.
Prost.
mein Kunde suchte sowas und die Recherche im Internet ist nicht wirklich erhellend.
Daher kurze Lösung:
Code:
edb=# create table pdf_store(id int generated always as identity primary key, filename text, filecontent bytea);
CREATE TABLE
--
-- diverse Versuche, eine Datei zu laden
--
edb=*# insert into pdf_store (filename, filecontent) values ('PostgreSQL14Beta1_New_Features_en_20210521-1.pdf', pg_read_binary_file('/tmp/PostgreSQL14Beta1_New_Features_en_20210521-1.pdf')::bytea);
INSERT 0 1
edb=*# select id, filename, left(filecontent,100) from pdf_store;
id | filename | left
----+--------------------------------------------------+------------------------------------------------------------------------------------------------------
2 | PostgreSQL14Beta1_New_Features_en_20210521-1.pdf | \x255044462d312e370d25e2e3cfd30d0a31353036332030206f626a0d3c3c2f4c696e656172697a656420312f4c20313138
4 | PostgreSQL14Beta1_New_Features_en_20210521-1.pdf | \x255044462d312e370d25e2e3cfd30d0a31353036332030206f626a0d3c3c2f4c696e656172697a656420312f4c20313138
(2 rows)
Habe nun also 2 identische PDF's gespeichert.
Jetzt auf der Command-Line:
Code:
akretschmer@akretschmer-desktop:~/EDB$ /usr/lib/edb-as/13/bin/psql.bin -p 5444 edb -tAc "select encode(filecontent,'base64') from pdf_store where id = 2" | base64 -d > /tmp/pdf.pdf
akretschmer@akretschmer-desktop:~/EDB$ md5sum /tmp/PostgreSQL14Beta1_New_Features_en_20210521-1.pdf
86f0b8cc6356e25b4b920d67add4a82f /tmp/PostgreSQL14Beta1_New_Features_en_20210521-1.pdf
akretschmer@akretschmer-desktop:~/EDB$ md5sum /tmp/pdf.pdf
86f0b8cc6356e25b4b920d67add4a82f /tmp/pdf.pdf
akretschmer@akretschmer-desktop:~/EDB$
Ich blase das also aus psql als Base64-codierten Kram raus, pipe es durch base64 (ein Tool) und dekodiere es wieder zurück in Hex und speicher das als Datei. md5sum ist gleich der Ursprungsdatei.
Prost.