2016-09-19 59 views
1

私たちはPostgreSQLデータベースにデータを保存し、関連文書をWord(TM)ファイルの形式で保管します。Word文書をPostgreSQLデータベースに保存できますか?

ここでは、プロジェクトの説明の中の特筆すべき文章では、ドキュメントをデータと共にデータベースに保存する必要があると述べています。

私の質問:Word文書をPostgreSQLデータベースに保存することはできますか?

私はそれを最初に圧縮しなければならない、多分.pdfやそれに類するトリックに変換することもできます。しかし、それが原因で再びデータを取得することが可能になり、私たちは中に入れて再作成する必要があります...ドキュメント

/マーティン

+1

バイナリデータ型を使用してこれを保存できます(https://www.postgresql.org/docs/current/static/datatype-binary.html)。 –

+0

データベースに格納されているWord文書内のテキストを検索することはできません。 –

答えて

3

はい、できます!

タイプbyteaのカラムは、最大1GBのバイナリデータを保持できます。そのbase64表現で文書をバック取り出すために

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

使用encode()機能:そのbase64表現から文書ファイルを格納するための

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

使用decode()機能:

次の例を考えると

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); 

はそれが役に立てば幸い!

+0

お問い合わせください。これは "TG9yZW0gaXBzdW0u"の意味ですか? –

+0

@ Mr.Aw "Lorem ipsum"を意味します。ベース64エンコーディング – Lacobus

関連する問題