Cygwin版psqlを使ってみよう

Cygwin版psqlを使ってみよう

NTT オープンソースソフトェアセンタ 板垣 貴裕

 

先回 は EnterpriseDB 社パッケージを使って PostgreSQL を導入しました。サーバといっしょに GUI の管理ツール pgAdmin がインストールされてはいますが、本番環境のデータベースサーバでは、コマンドラインでの操作が必要になることも多いのではないでしょうか? せっかく PostgreSQL には、psql という高機能な CUI ツールがあるので、操作に慣れておきたいところです。ただ、Windows 版の psql は、コマンドプロンプトの制約により使い勝手が良くありません。そこで、Cygwin をインストールし、Unix/Linux 環境と同様な使いやすい psql 環境を構築します。

Cygwin のインストール

www.cygwin.com から setup.exe をダウンロードします。Cygwin も、ウィザード形式でインストールが進みます。途中でインストールするパッケージ選択がありますが、もし忘れ物があっても後から追加することができるので、安心して試してください。

0. インストーラの実行
Cygwin setup.exe も 「管理者として実行」する 必要があります。EXE ファイルの右クリックメニューから「管理者として実行」を選んでください。
1. Cygwin Net Release Setup Program
インストール・ウィザードの最初のページです。'Next' をクリックします。
2. Choose A Download Source
パッケージの取得元を選びます。初回インストールでは、ダウンロードとインストールを同時に行うので "Install from Internet" を選びます。
3. Select Root Install Directory
インストール先のディレクトリを指定します。デフォルトでは "C:\cygwin" になっており、そのままで構わないでしょう。
4. Select Local Package Directory
ダウンロードしたパッケージの一時保存先を選びます。二度目以降のインストールの際にキャッシュとして使えます。
5. Select Your Internet Connection
ダウンロードに使うインターネット接続を選びます。プロキシを使わない環境であれば "Direct Connection" を、プロキシが必要であれば、IEで設定した後 "Use IE5 Settings" または "Use HTTP/FTP Proxy" を選んで設定を入力します。
6. Choose A Download Site
ダウンロード元のサイトを選びます。どこでも構いませんが、*.jp のどれかを選択するのが良いでしょう。
7. Select Packages
インストールするパッケージを選びます。PostgreSQL をビルドするためにはパッケージの追加が必要なので注意してください。 デフォルトで選択されているパッケージの他に、以下の項目も追加してください。
  • Devel / bison
  • Devel / gcc-core
  • Devel / flex
  • Devel / gettext-devel
  • Devel / make
  • Devel / readline
  • Devel / zlib-devel
  • Perl / perl

また、ここで PostgreSQL のバイナリも選択できますが、収録されているバージョンは 8.2 と古いので避けましょう。8.2 の psql から 8.4 のサーバにつなぐと、エラーが発生するコマンドがあります。(逆は問題なし)

"次へ" をクリックすると、ダウンロードとインストールが始まります。ネットワーク回線の速度にも寄りますが、多少時間がかかります。

8. Create Icons
インストールが正常に完了すると、アイコンを作成して Cygwin のインストールは完了です。

psql のコンパイル

次に、PostgreSQL のビルドに移ります。ソースコードは postgresql-8.4.0.tar.bz2 をダウンロードして使いました。最初に configure を行います。その際、今回は psql ツールと、psql に必要な libpq ライブラリに関連する configure オプションを指定しています。(日本語メッセージとマルチスレッド対応)

$ tar jxvf postgresql-8.4.0.tar.bz2
$ cd postgresql-8.4.0
$ export PGSRC=`pwd`
$ ./configure --enable-nls --enable-thread-safety

続いて、psql と libpq を make し、インストールします。データベース・サーバ本体 (src/backend 以下) はビルドする必要はありません。

$ cd $PGSRC/src/bin
$ make
$ make install
$ cd $PGSRC/src/interfaces/libpq
$ make
$ make install
トラブルシュート : ここで "../../src/Makefile.global:350: ../../src/Makefile.port: No such file or directory" のようなエラーが発生する場合、Cygwin 版ではない make を使ってしまっているのかもしれません。代わりに $ /usr/bin/make とフルパスを指定して実行してください。

インストールが完了したら、psql を使う前に、以下の環境変数を設定してください。~/.bash_profile に追記します。

export PATH=/usr/local/pgsql/bin:/usr/local/pgsql/lib:$PATH
export PGHOST=localhost
export PGCLIENTENCODING=sjis

その他には、下記もお好みで追記してください。特に日本語データを扱う場合には、control-chars の設定を追加する必要があります。

export PGUSER=postgres # ログインユーザを postgres に
export LANG=ja # メッセージを日本語に
export LESS='--raw-control-chars' # psqlのページャで日本語を表示
alias ls='ls --show-control-chars' # lsで日本語を表示 (一般的な設定)

Windows コマンドライン版との違い

Cygwin版とWindows コマンドライン版の違いは、主に readline ライブラリの有無です。Cygwin 版では以下の利点があり、使い勝手がかなり向上すると思います。

入力補完や履歴管理機能が豊富
タブキーでの入力補完や Ctrl+R での履歴サーチが利用できるため便利です。コマンドライン版では上下キーでの履歴を遡る機能のみがあります。
Ctrl+C ではクエリのキャンセルのみ行われる
コマンドライン版はなぜかプログラムごと終了してしまいます。
複数行のSQLの扱いが適切
入力履歴にて、コマンドライン版では改行ごとに分割されてしまいますが、Cygwin版ではセミコロン (;) までを1つのSQLとして扱えます。

psql の具体的な使い方は、別記事「psqlを使ってみよう」を参考にしてください。

(2009年9月1日 公開)