sql >> Base de Datos >  >> RDS >> PostgreSQL

Convierta una columna bytea a OID mientras conserva los valores

Una columna de tipo Oid es solo una referencia a los contenidos binarios que en realidad están almacenados en el pg_largeobject del sistema. mesa. En términos de almacenamiento, un Oid es un entero de 4 bytes. Por otro lado, una columna de tipo bytea es el contenido real.

Para transferir un byte a un objeto grande, se debe crear un nuevo objeto grande con la API similar a un archivo de objetos grandes:lo_create() para obtener un nuevo OID, luego lo_open() en modo de escritura, luego escribe con lo_write() o lowrite(), y luego lo_close().

Esto no se puede hacer razonablemente con solo un yeso.

Básicamente, necesitaría escribir un código de aproximadamente 10 líneas en el idioma de su elección (al menos uno que admita la API de objetos grandes, incluido plpgsql) para realizar esta conversión.