

Contents
実行環境
昨日までと同じで、再掲すると下のとおり。仮想マシンの操作は全てホスト• ホスト
• ゲスト
• ゲスト
• 仮想化ソフトウェア … Portable VirtualBox 4.3.6
• ネットワーク設定 …
• 共有フォルダ …
仮想マシン上の作業
最低限必要なのは(1)postgre
(2)PostgreSQL
の二つ。(1)は数日前の
# ログイン # VirtualBoxのポートフォワーディングを使い、ホスト機からpostgresユーザで [...\]ssh -p 2233 postgres@localhost # 設定(root) # postgresユーザを、共有フォルダの所有グループvboxsfに追加(7月8日の記事の再掲) su usermod =G vboxsf postgres # 上の結果確認 cat /etc/group | grep postgres # 確認 : postgresユーザが、共有フォルダ内を見たりテキストを書き込めるか ls /media/sf_win_r echo 1 > /media/sf_win_r/test1.txt # 確認 : PostgreSQLデータディレクトリの場所 ls /var/lib/pgsql/9.5/data # 設定(root) # PostgreSQLデータフォルダ下に、共有フォルダへのシンボリックリンク作成 su ln -s /media/sf_win_r /var/lib/pgsql/9.5/data/win_r # 上の結果確認 # postgresユーザが、シンボリックリンク経由で共有フォルダへ読み書きできるか ls /var/lib/pgsql/9.5/data/win_r echo 2 > /var/lib/pgsql/9.5/data/win_r/test2.txt rm /var/lib/pgsql/9.5/data/win_r/test2.txt
設定を反映するため
su service postgresql-9.5 restart
ホスト OS から動作確認
昨日の最後に設定したSELECT pg_ls_dir('win_r'); SELECT pg_read_file('win_r/新しいテキスト ドキュメント.txt');


再帰的フォルダ検索のテスト
仮想マシンの»
↓ 簡単なサンプルフォルダ・ファイル群を、ホスト側「R:/


↓ サブフォルダ内を含む全フォルダ・ファイルをリストアップし、ファイルサイズを付けて表示するクエリ。再帰
WITH RECURSIVE r (path, isdir, size) AS ( SELECT text 'win_r/関東', TRUE, NULL :: int8 UNION SELECT concat, stat.isdir, CASE WHEN stat.isdir THEN NULL ELSE stat.size END FROM r, pg_ls_dir(r.path) AS fname, concat(r.path, '/', fname), pg_stat_file(concat) AS stat WHERE r.isdir IS TRUE ) SELECT * FROM r;

pg_stat_file