2015/03/15

初めて知った PostgreSQL の Windows ポータブル版

[PostgreSQL][実行環境]
最近 MathJax のポータブル環境を構築する過程で見つけました。↓ バージョン 8.4 から最新の 9.4 まで揃っています。9.4 を Windows 7 32bit で試したら、あっさり USB メモリに PostgreSQL を入れて持ち運ぶことができたので、以下、経過をメモ。

■ PostgreSQL Portable : Files


プロジェクトのトップページから引用。ポータブルという名のとおり PC のシステムにはファイルを残さないので、他の PC への移動やデモに使えそう。USB メモリは読み書きの速度や寿命の点で問題があるため常用は考えられませんが。
PostgreSQL Portable is an open source database packaged as a portable app, so you can run a full PostgreSQL database on your iPod, USB flash drive, portable hard drive, etc. It has all the same features as PostgreSQL, plus, it leaves no personal information behind on the machine you run it on, so you can take it with you wherever you go.


プロジェクトのページからインストーラ PostgreSQLPortable-9.4.1.paf.exe を適当な場所にダウンロードし実行します。11.5 MB と軽量なのもいいです。


↓ インストーラが行うのは、下記で指定したフォルダにファイル一式を解凍するだけ。指定したフォルダも、後で自由に移動できます。




上の Run PostgreSQL にチェックを入れて終了するか、インストールフォルダ / App / PgSQL / pgsql.cmd ↓ を実行するとデータベースの準備(初期化)を行います。以下すべて Windows のゲストユーザで試した様子で、権限の問題は特にありませんでした。ただ、遅い USB メモリ上で初期化を行ったら約10分もかかりました ^^;



↓ ともかく初期化できれば、続いて PostgreSQL サーバ起動 & psql での接続が行われます。デフォルトでコマンドプロンプトのコードページが 1252 になっており、日本語版 Windows の 932 と合っていないので警告が出ます。



対策は簡単で、先ほどの pgsql.cmd でコードページを修正するだけ。いったんコマンドプロンプトを閉じます。↓ psql を \q で終了させると、同時にサーバもシャットダウンされます。


↓ pgsql.cmd は短いので、参考まで全文を載せます。環境変数とパスを見ると、使うフォルダ・ファイルが全て同じディスク内に限定されているのが分かります。最初の方で chcp 1252 > nul を 932 に変更。他に必要があれば適宜変えます。


あと Windows 版 PostgreSQL 9.4 の psql は日本語が文字化けするので、2015/03/12 と同じ方法で対処。http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip をダウンロードし、中にある intl.dll に差し替えます。↓


これで準備完了。先ほどと同様に pgsql.cmd を起動します。まだフォント指定が日本語でないため ↓ 豆腐になりますが…(文字化けではない)※初出時 pgsql.com と誤記していました


↓ コマンドプロンプトのプロパティでコードページが 932 になっていれば大丈夫。フォントタブで日本語フォントに切り替えるだけです。




↓ テスト用に一つだけクエリ。システムに元からあるデータベース以外は、まだ空の状態です。psql 終了で、先ほどと同様にサーバもシャットダウンされます。



コマンドプロンプトを直接閉じるとサーバの強制終了になり、postmaster.pid が残っているので次回起動時に「他のサーバが動作中の可能性がありますが…」と出ます。↓


↓ デフォルトでのフォルダ構造。プログラムは App / PgSQL / bin 内で、pgAdmin も入っています。また postgresql.conf など設定ファイルは、通常のインストール版と同様 data フォルダ下にあります。ただしログは data フォルダ下の pg_log にありません。


ポータブル版に限らないポート番号の重複の話ですが、システムにインストールした PostgreSQL が起動していて 5432 ポートを使っている場合、こちらのポータブル版は 5432 ポートを使えず起動失敗します。↓ この場合は postgresql.conf で別のポートを設定します。


今回、既に PostgreSQL をシステムにインストールしている PC とそうでない PC 両方で、ゲストユーザとしてログオンし、USB メモリに入れたこのポータブル版を起動できました。結構使えそうなので、コマンドプロンプトでなく GUI で何かデモする例を考えます。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。