我目前正在将oracle数据库转换为postgres。我试图操纵bytea
没有成功。
我已经搜索过,发现与DBMS_LOB.append
Postgres中的Oracle 相同的是lo_lseek()
类型BLOB
对应的bytea
。我只是不知道bytea
在Postgres中操作的等效函数。
DECLARE
l_blob BLOB;
BEGIN
DBMS_LOB.createtemporary (l_blob, FALSE, DBMS_LOB.CALL);
DBMS_LOB.append(l_blob,TO_BLOB(UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW('iVBORw0KGgoAAAANSUhEUgAAAH0AAAAcCAYAAABMKLDaAAAAAXNSR0IArs4c6QAA'))));
DBMS_LOB.append(l_blob,TO_BLOB(UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW('AARnQU1BAACxjwv8YQUAAAAJcEhZcwAALiIAAC4iAari3ZIAAAAYdEVYdFNvZnR3'))));
END;
发布于 2019-05-21 14:49:42
没有流媒体bytea
,所以你不能把它写成块。如果你想写它,你必须在RAM中拥有整个值。
该lo_lseek
函数不适用于大型对象bytea
,而是用于存储大型二进制数据的替代方法。
大对象可以流式传输,但处理起来更复杂。仅当您需要存储非常大的数据(数百MB或更多)或者您需要能够以块的形式读取或写入时才使用大对象。
https://stackoverflow.com/questions/-100006763
复制相似问题