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 存储表的主要内容,如果未能解决你的问题,请参考以下文章

postgresql自动导出SQL语句查出的数据

数据库自定义函数,判断参数,生成不同的sql语句,返回数据

PostgreSQL查询SQL的语法分析(1)——词法分析

使用 SELECT 语句查询自定义 postgresql 参数

将 PostgreSQL SQL 转储转换为 PostgreSQL 自定义格式转储

如何用java对excel进行自定义排序?