PostgreSQL SQL 语句生成自定义 blob 存储表
Posted
技术标签:
【中文标题】PostgreSQL SQL 语句生成自定义 blob 存储表【英文标题】:PostgreSQL SQL Statement to generate custom blob storage table 【发布时间】:2012-07-10 12:36:18 【问题描述】:我需要在当前项目中使用看起来很棒的django-storages Database storage backend,但是:
它可用于将文件名映射到数据库 blob:因此您必须将它与手动创建的特殊附加表一起使用。该表应包含文件名的 pk 列(最好使用与 FileField 相同的类型:nvarchar(100))、blob 字段(例如图像类型)和大小字段 (bigint)。
我承认。 ORM 把我宠坏了。自从我编写 SQL 语句以来已经有一段时间了,而且我对 PostgreSQL 的 SQL 和 BLOB 风格一点也不熟悉。
那么,有人可以帮我使用包含上述三列(FILE_NAME、BLOB、FILE_SIZE)的 Postgres CREATE TABLE 语句以及适当的列类型吗?
【问题讨论】:
如果有人想知道。我最终没有使用数据库存储后端,因为它与 Postgresql 基本不兼容,存在许可问题,并且没有给我留下好印象。我编写了自己的自定义存储后端,它使用了此处推荐的文本字段和 base64 编码:wiki.postgresql.org/wiki/BinaryFilesInDB,这太棒了。如果您与我联系,我很乐意分享。 【参考方案1】:您通常使用bytea
类型的列作为 PostgreSQL 中的 blob。您的陈述可能如下所示:
CREATE TABLE (
file_name text PRIMARY KEY
,blob bytea
,file_size bigint
);
PostgreSQL 中没有nvarchar
,就像 SQL Server 中一样。您可以使用varchar(100)
,但我建议您只使用不带修饰符的text
。
还有其他存储 blob 的选项。参考这个related answer for more。
【讨论】:
以上是关于PostgreSQL SQL 语句生成自定义 blob 存储表的主要内容,如果未能解决你的问题,请参考以下文章
使用 SELECT 语句查询自定义 postgresql 参数