如何在postgresql中使用LO数据类型?

时间:2013-09-19 19:02:29

标签: java database postgresql postgresql-9.1

我目前正在尝试做什么:

我正在使用Postgresql的软件作为后端数据库。该软件提供使用Web服务与软件/ DB通信的API。我试图通过api插入一个图像到数据库,通常应该是一个BLOB,因为postgresql不支持,我用postgresql-contrib包创建了lo扩展。现在,实际的大对象保存在它自己的表中,并且当前表只保留对该对象的引用,但是API没有考虑到这一点。我目前将image列的数据类型作为BYTEA,但是我收到一条错误,说“列'img'的类型为bytea,但表达式的类型为lo;”。由于插入封装在webservice的后端,因此我无法在API中执行任何操作。我可以在Postgres中做些什么来让api插入大型对象吗?

TL; DR:

软件API期望将大对象(BLOB)放入DB。如果DB识别BLOB数据类型,应该无缝地工作。 我在postgres中设置了lo扩展。 目前我将列数据类型设置为bytea但是出现此错误: “列'img'的类型为bytea,但表达式的类型为lo;”。

如何存储lo?

:::我正在使用postgresql 9.1


我得到了它的工作。删除表后,我忘了重新创建lo扩展,这就是为什么它没有识别数据类型。

1 个答案:

答案 0 :(得分:1)

将文件传输到db的easyes(但不是最有效)方法是将文件编码为HEXbase64将它们转换为varchardecode到{在存储到bytea字段之前输入{1}}。

从db。

中检索文件的方式相同

如果你想在没有编码/解码owerhead的情况下转移bytea,那么你必须研究你的驱动程序,语言和框架如何处理它。