某些应用程序的 16 字节密码哈希值作为 LOB 数据存储在 postgresql-9.1 数据库中。(我不知道为什么)
所以我可以获得哈希:
# select * from pg_largeobject where loid=16916;
loid | pageno | data
-------+--------+------------------------------------
16916 | 0 | \x098f6bcd4621d373cade4e832627b4f6
如何在 postgres-9.1 中替换此 blob 的数据或使用指定数据创建新的 blob?
我看到lo_from_bytea
自 posgresql-9.4 以来有功能。但是9.1中没有这样的东西。
我可以使用lo_import
- 从外部文件加载 lob,但它很难。有没有更简单的东西?
请注意,PostgreSQL 9.1 版已于2016 年废弃,不应再使用。
不管怎样,9.1 中有一组大对象服务器端功能应该可以满足您的需求。他们倾向于将大对象公开为文件,提供类似文件的原语。
例如,这里有一个 plpgsql 函数,它使用这些原语替换大对象中的值。它应该适用于 9.1 或更新版本: