Если у вас есть доступ к внешней базе данных, вы можете создать представление для нее, чтобы преобразовать lob
s в bytea
или text
, чтобы они могли использоваться локальной базой данных.
В иностранной базе данных вы должны создать представление:
drop view if exists tmp_view_produto_descricao;
create view tmp_view_produto_descricao as
select * from (
select dado.*, lo_get(dado.descricaoExtendida_oid) as descricaoEstendida
from (
select
itm.id as item_id,
case when itm.descricaoExtendida is Null then null else Cast(itm.descricaoExtendida as oid) end descricaoExtendida_oid
from Item itm
where itm.descricaoExtendida is Not Null
and Cast(itm.descricaoExtendida as Text) != ''
) dado
) dado
where Cast(descricaoEstendida as Text) != '';
В локальной базе данных вы объявите внешнее представление, чтобы вы могли использовать его:
create foreign table tmp_origem.tmp_view_produto_descricao (
item_id bigint,
descricaoExtendida_oid oid,
descricaoEstendida bytea
) server tmp_origem options (schema_name 'public');
Это немногоболее грязный и многословный, но даст вам лучшую производительность, чем вы получили бы, если бы обработали pg_largeobject
напрямую.