我可以在PostgreSQL数据库中存储Word文档吗?

时间:2016-09-19 12:29:34

标签: sql postgresql

我们将数据保存在PostgreSQL数据库中,并以Word(TM)文件的形式保存相关文档。

现在项目描述中的一个特殊句子表明文档应该与数据一起存储在数据库中。'

我的问题:我可以将Word文档存储在PostgreSQL数据库中吗?

如果我必须首先压缩它,甚至转换为.pdf或类似的技巧,这没关系。但它应该可以再次检索数据,并重新创建我们放入的文档......

/马丁

1 个答案:

答案 0 :(得分:5)

是的,你可以!

bytea类型的列最多可容纳1 GB的二进制数据。

考虑以下示例:

CREATE TABLE tbl_document
(
    id BIGINT, 
    info TEXT, 
    doc BYTEA, 
    CONSTRAINT pk_tbl_document PRIMARY KEY ( id )
);

使用decode()函数存储来自base64表示的文档文件:

INSERT INTO tbl_document ( id, info, doc ) VALUES ( 1, 'Personal Resume', decode( 'TG9yZW0gaXBzdW0u', 'base64')::bytea  );

使用encode()函数以base64表示形式检索文档:

SELECT info, encode( doc, 'base64' ) FROM tbl_document WHERE id = 1;

使用pg_read_file()函数将二进制文件直接读入数据库:

INSERT INTO tbl_document ( id, info, doc ) VALUES ( 2, 'Daily Report', pg_read_file('report.doc')::bytea );

希望它有帮助!