我在 Ubuntu 12.10 下安装了 PostgreSQL 9.1
现在我有一个名为 property 的表
我想添加一个可用于存储照片的字段(链接到照片或将照片导入列?)
但我不知道如何添加这个字段
PostgreSQL 能做到这一点吗?
如果是这样,我可以使用哪些关键字来查找此信息?
更新 2013/10/30
我尝试使用 oid 导入我的文件,它工作正常!
但是当我想使用非超级用户输出文件时,
这给了我一个错误
ERROR: must be superuser to use server-side lo_export()
HINT: Anyone can use the client-side lo_export() provided by libpq.
如何使用客户端lo_export()
?
我尝试谷歌它,但几乎所有的服务器端教程
所以我尝试使用 byteA
它适用于其他用户但无法将数据导出到文件?
我尝试使用bytea_export
但bytea_import
由 Jack 的 sql 脚本制作,而不是内置函数
所以还有两个问题:
1) 如何使用 clent_sidelo_export()
2)如何使用bytea_export()
??
感谢您的回答!
有两种方法可以在属性表中存储大对象 LOB(如照片和图像)。您可以使用限制为 1GB 的 BYTEA 数据类型。另一个选项是 OID,它将大型对象存储在特殊的 LOB 结构中。OID 列限制为 2GB。
OID
这是 postgres 关于 OIDS 的相关文档。
白茶
这是 Jack Douglas 关于如何使用函数将数据导入到 bytea 列的一个很好的示例。请记住,为了使用该功能,您必须运行以下命令来激活 plpgsql。
(其中bytea_import_function.sql包含 Jack示例中的代码。)
现在连接到 psql 和您的数据库
与 BYTEA 相比,OID 有几个优势。BYTEA 将在将图像发送给用户之前将它们预加载到内存中,而 OID 列将数据直接流式传输给用户。
不要将图像存储在数据库中
没有可以编辑或处理照片的数据库功能。存储它们可能会长时间锁定您的数据库会话。绝对没有任何理由这样做。PostgreSQL 不是文件系统,而是数据库。