我目前正在尝试做什么:
我正在使用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扩展,这就是为什么它没有识别数据类型。
答案 0 :(得分:1)
将文件传输到db的easyes(但不是最有效)方法是将文件编码为HEX
或base64
将它们转换为varchar
和decode
到{在存储到bytea
字段之前输入{1}}。
从db。
中检索文件的方式相同如果你想在没有编码/解码owerhead的情况下转移bytea
,那么你必须研究你的驱动程序,语言和框架如何处理它。