postgresql存儲二進制大數據文件

若是想把整個文件或圖片存儲在數據表的一個字段內,該字段能夠選擇二進制類型,而後將文件按二進制存儲起來,文本文件也能夠存在text字段內。java

示例以下:sql

二進制類型bytea的操做(在最大值內,有內存限制)函數

一、 建立表post

Create table byteatable(id int,obj bytea);

二、 將文件放到coordinator目錄下/mnt/postgresql/coordspa

經過pg_read_binary_file()函數,插入一張圖片- 目錄:/mnt/postgresql/coord/1.jpgpostgresql

postgresql =# Insert into byteatablevalues(256,pg_read_binary_file('1.jpg'));
INSERT 0 1 
postgresql =# Insert into byteatablevalues(256,pg_read_binary_file('weibo.txt'));
INSERT 0 1

三、 也能夠調用pg_read _file()將一個文本文件存儲在一個text字段內blog

postgresql=#ALTER TABLE byteatable ADD COLUMN body text;
ALTER TABLE
postgresql=#Insert into  byteatable values(256,pg_read_binary_file('weibo.txt'),
pg_read_file('weibo.txt'));
INSERT 0 1
postgresql =# select body from byteatable whereid='256';

注意:函數pg_read_binary_file()pg_read_file()中的路徑必須是相對路徑,默認路徑是coordinator目錄下,而且必須在coordinator目錄下或者coordinator目錄的子目錄下。圖片

 

Nameip

Return Type內存

Description

pg_read_file(filename text [, offset bigint, length bigint])

text

Return the contents of a text file

pg_read_binary_file(filename text [, offset bigint, length bigint])

bytea

Return the contents of a file

相關文章
相關標籤/搜索