PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Converter uma coluna bytea em OID enquanto retém valores


Uma coluna do tipo Oid é apenas uma referência ao conteúdo binário que está realmente armazenado no pg_largeobject do sistema tabela. Em termos de armazenamento, um Oid é um inteiro de 4 bytes. Por outro lado, uma coluna do tipo bytea é o conteúdo real.

Para transferir um bytea para um objeto grande, um novo objeto grande deve ser criado com a API do tipo arquivo de objetos grandes:lo_create() para obter um novo OID, então lo_open() no modo de escrita, então escreve com lo_write() ou lowrite() e, em seguida, lo_close().

Isso não pode ser feito razoavelmente com apenas um elenco.

Basicamente, você precisaria escrever um código de ~10 linhas no idioma de sua escolha (pelo menos um que suporte a API de objetos grandes, incluindo plpgsql) para fazer essa conversão.