Wenn man von MySQL auf Postgres umsteigt, gibt es Einiges was anders funktioniert. Ein Beispiel dafür, ist das Speichern einer Datei oder eines binären Objektes in der Datenbank. In MySQL muss man ein BLOB (Binary Large Object) Feld erstellen um eine Datei in der Datenbank speichern zu können. In Postgres gibt es 2 Möglichkeiten:
- OIDs: Soweit ich das verstanden habe, speichert Posgres die Datei dann irgendwo anders, und verweist durch die OID (eine automatisch vergebene ID) darauf. In dem Datensatz steht dann an Stelle der Binärdaten eine ID, mit der man die Binärdaten selektieren kann. Irgendwo habe ich folgenden Befehl gefunden, habe ihn aber nicht getestet:
SELECT lo_export(file_oid, '/pfad/zum/ablegen/der/datei') FROM datei WHERE id=1;
- Bytea: Ist vergleichbar mit einem BLOB unter MySQL, wird also genau so eingefügt bzw. ausgelesen.
Ich habe bisher nur mit Bytea gearbeitet, und muss sagen das es keinen Unterschied macht – wenn man weiß das man Bytea nehmen muss.
Schlagworte: binär, BLOB, Bytea, OID, PostgreSQL