问题描述
我需要将一个表中的文本数据转换为另一个表中的大对象数据。因此表结构为:-
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)