今回やること
PostgresSQLのデータベースにjpgをデータ(バイナリ)を格納する。
PostgresSQLのバージョン10で検証。
格納先フォルダを作成
/var/lib/pgsql/10/data
にDBファイル群があるのでディレクトリを作成。
作成する時のOSユーザはpostgres
を想定。
cd /var/lib/pgsql/10/data
mkdir images
ファイルのアップロード
/var/lib/pgsql/10/data/images
にファイルをアップロードしておく
今回はサンプルとして、image.jpg
を配置しておく。
テーブル作成
bytea型のデータが入るテーブルを用意します。
create table sample
(
sample_id serial not null constraint pk_sample primary key,
bytes bytea not null
);
データの挿入
PostgreSQLでバイナリ型を挿入する時は、pg_read_binary_file()
でファイルをバイナリ形式にしなければいけない。
INSERT INTO sample(sample_id, bytes)
VALUES (1, pg_read_binary_file('images/image.jpg'));
/var/lib/pgsql/10/data
にアクセスするためには、Superuser権限がないとダメなので注意が必要。
superuser権限の付与は以下で対応する。
ALTER ROLE sample_user WITH SUPERUSER;