2016-04-07 4 views
2

Ich habe folgende AbfrageWie Binärdaten in Postgres oid Spalte

INSERT INTO SESSIONINFO(ID, LASTMODIFICATIONDATE, RULESBYTEARRAY, STARTDATE) VALUES 
(1, NULL, '\xaced0005774d0a060805100418005243080010001a3918002000320608011000180042121a080a044d41494e100022060a044d41494e52090a0744454641554c545a0c0a0a0805320608001000180122026800') 

einfügen Wenn ich versuche, über Anweisung auszuführen

ERROR: invalid input syntax for type oid: "\xaced0005774d0a060805100418005243080010001a3918002000320608011000180042121a080a044d41494e100022060a044d41494e52090a0744454641554c545a0c0a0a0805320608001000180122026800" 

folgende Fehler bekommen wie diese zu lösen ..

Antwort

1

Ich glaube du hast oid und bytea verwechselt.

bytea ist für binäre Daten in einer Zeile verwendet. Ihre RULESBYTEARRAY Spalte sollte fast sicher bytea als Typ haben. Siehe binary data types im Handbuch.

Der oid Säulentyp ist eine einfache 32-Bit-Ganzzahl ohne Vorzeichen. Es wird von PostgreSQL verwendet, um auf Systemtabellen und alle möglichen anderen Dinge zu verweisen. Eine der Verwendungen bezieht sich auf Zeilen in der pg_largeobject-Tabelle, in der dateiähnliche Objekte gespeichert werden können.

Wenn Sie binäre Daten speichern und abrufen möchten, verwenden Sie fast sicher bytea-typisierte Felder, nicht pg_largeobject. pg_largobject ist für sehr, sehr große Daten und/oder Daten gedacht, die Sie lesen und ändern möchten, ohne jedes Mal das ganze Los laden zu müssen und alles wieder zu schreiben, wenn Sie etwas ändern.