2012-07-10 28 views
1

我需要使用真棒前瞻性django-storages Database storage backend对于当前的项目,但:PostgreSQL的SQL语句来生成定制的Blob存储表

它可用于文件名映射到数据库中的BLOB:所以你必须使用它带有一个手动创建的特殊附加表。该表应该包含文件名的pk列(最好使用FileField使用的相同类型:nvarchar(100)),blob字段(例如图像类型)和size字段(bigint)。

我承认吧。 ORM已经宠坏了我。自从我写了一条SQL语句以来,我已经有一段时间了,而且我完全不熟悉PostgreSQL的SQL BLOG的风格。

那么,请问有人可以用上面提到的三列(FILE_NAME,BLOB,FILE_SIZE)的Postgres CREATE TABLE语句以及相应的列类型来帮助我吗?

+0

如果有人在想。我最终没有使用数据库存储后端,因为它基本上与Postgresql不兼容,有许可问题,并没有给我留下良好的印象。我编写了自己的自定义存储后端,使用文本字段和base64编码,如下所示:http://wiki.postgresql.org/wiki/BinaryFilesInDB,这非常棒。如果你接触到我,我会很乐意分享。 – 2012-07-12 18:23:39

回答

3

对于PostgreSQL中的斑点,您通常使用bytea类型的列。你的声明看起来是这样的:

CREATE TABLE (
    file_name text PRIMARY KEY 
,blob bytea 
,file_size bigint 
); 

在PostgreSQL里没有nvarchar像SQL服务器。您可以使用varchar(100),但我建议只使用text而不使用修饰符。

还有其他选项来存储blob。请参阅此related answer for more