Postgres lo_import从其他表文本数据导入大对象

问题描述

我需要将一个表中的文本数据转换为另一个表中的大对象数据。因此表结构为:-

Employee->
id (character varying(130)),name (character varying(130)),description (text)

EmployeeDetailed ->
detailed_id(character varying(130)),desc_lob (oid)

我可以运行什么查询,以便将所有行从Employee表转移到EmployeeDetailed表,以便从Employee的id列填充detail_id,并将描述转换为大对象,并将oid插入desc_lob。

我可以使用lo_import(),在这里有帮助吗?

解决方法

lo_import()是客户端界面命令。您可以使用INSERT的结果来使用SELECT语句,并在该SELECT子句中使用lo_from_bytea

INSERT INTO EmployeeDetailed (detailed_id,desc_lob)
SELECT id,lo_from_bytea(0,convert_to(description,'LATIN1'))
FROM Employee

LATIN1更改为您喜欢的编码方式(请参见this answer