[Home] [ダウンロード] [インストール] [使用方法] [使用例] [FAQ]

p g b a s h

pgbashは、bashシェルの中に PostgreSQL用のデータベースアクセス機能を組み込んだシェルです。 シェルスクリプトを作成してバッチ処理で SQLを実行したり、 端末から対話的に SQLを直接実行することができます。 また、簡易的なWebアプリケーションを作成するための便利な機能を備えています。

[Japanese] [English]


最新バージョンは、pgbash-7.3 です。


◎ pgbashの概要
  • データベース・インターフェイス
    pgbashは、bashシェルの中に PostgreSQL用の直接SQL/埋込SQLインターフェイスを組み込んでいます。 ここで、「直接SQL」とは、SQLを入力すると即座に実行してその結果を標準出力に出力する機能を表します。また、「埋込SQL」とは、検索結果をシェル変数に代入し、シェルスクリプト言語で処理する機能を表します。Pgbashでは、SELECT_INTO文 もしくは FTECH_INTO文を「埋込SQL」として使用することができます。

  • SQL文の処理方法
    Pgbashは、入力された SQL文を exec_sqlコマンドで処理します。つまり、'SQL;'を入力すると、'exec_sql "SQL"'が入力されたことと全く同じことになります。そのため、SQL文とパイプライン/リダイレクション、バックグランドジョブ命令などを組み合わて実行することができます。

  • ログインシェル もしくは サブシェルとして使用可能
    Pgbashは、bashシェルの全ての機能を、そのまま利用することができますので、ログインシェルとしても、サブシェル(親のシェルから起動された子のシェル)としても使用できます。Pgbashをサブシェルとして起動するには、ログインした後に、例えば /usr/local/bin/pgbash とタイプするだけです。

    Pgbashをログインシェルとして使用した場合、データベースのアクセス中に何らかのトラブルがあるとPgbashが終了し、同時にログアウトされる可能性があります。このようなことも考慮して、一般的には、Pgbashをサブシェルとして使用するほうが良いでしょう。

  • シェルスクリプトおよびWebアプリケーションを作成可能
    Pgbashは、SQL文とIF/WHILEなどの制御文およびシェル変数を使ってシェルスクリプトを作成することができます。また、Pgbashは、シェルスクリプトを Webアプリケーション(CGI プログラム)として使用するために、GET/POSTメソッドのデータの入力や検索結果の出力などの便利な機能を備えています。

    Pgbashを使用したCGIプログラムは、PHPのようにWebサーバソフトに組み込むタイプと比較すると実行時にサーバの負荷が高くなります。従いまして、Pgbashは、アクセス頻度が比較的少ないWebアプリケーション、本格的なWebアプリケーションを作成する前のプロトタイプシステムに向いていると言えます。

  • 動作環境
    Pgbashは、実行時に PostgreSQLの libpq ライブラリが必要です。pgbashを起動する際に、親のシェル(通常は、ログインシェル)に libpqライブラリのパスを指定しておく必要があります。また、対話型環境で Pgbashを起動するには、pgbashrc 環境設定ファイルが必要になります。

    (pgbashrcとは)
    pgbashrcは、対話環境で操作する上で便利なコマンドや、データベース情報を表示するための各種コマンドが設定された環境設定ファイルです。ユーザは、インストールされた pgbashrc をそのまま使用することができますし、それをコピーしてユーザ独自の pgbashrc を作成することもできます。


◎ pgbashの特徴
  • 対話型環境における機能
    1. pgbashは、psql と同等のデータベースアクセス機能が有ります。
    2. pgbashは、pgbashrc を使用してユーザ独自の対話型環境を簡単に設定できます。
    3. pgbashは、bashの標準機能である alias、function、操作履歴の利用などの柔軟な対話型の操作環境を提供することができます。
    4. pgbashは、SQLとパイプライン、リダイレクション、バックグランドジョブとを組み合わせて実行することができます。

  • pgbash独自のSQL拡張機能
    1. pgbashは、CONNECT, DISCONNECT, SET CONNECTIONを用いて、複数のデータベースにアクセスすることができます。
    2. pgbashは、「SELECT INTO :ホスト変数」文や「FETCH INTO :ホスト変数」文によって検索結果をシェル変数に代入する機能があります。
    3. pgbashは、postresスーパユーザだけではなく一般ユーザも、ファイル名を指定してコピーできる独自のCOPY機能を実装しています。列名を指定することもできます。
    4. pgbashは、SQL実行後のエラーコード、SELECTの結果のタプル数、列数、列名などをシェル変数に保管します。

  • Webアプリケーションとしての機能
    1. pgbashは、SQL出力をHTMLに切り替え、GET/POSTメソッドによるデータの読込、HTTP_COOKIE の値の読込などを自動的に行う機能があります。
    2. pgbashは、SELECTの結果を自動的にHTMLのTABLE形式で出力できます。その際に、TABLE タグ、ヘッダー部の TRタグ、THタグ、ボディ部の TDタグを変更することができます。


◎ 開発経緯
  • 1999.07.初 : pgsql-jp メーリングリスト(ML)にてインターフェイスの検討。
  • 1999.07.中 : 久保健洋さんが pqbashを作成して pgsql-jp MLで公開。
  • 1999.07.末 : 直接SQL/埋込SQLのpgbashを pgsql-jp MLで検討。
  • 1999.08.31 : pgbash-1.0-beta を公開。
  • 1999.09.30 : pgbash-1.1.0を公開(CGI機能の追加、出力形式の統一)
  • 1999.10.30 : pgbash-1.2.1を公開(操作環境の整備とCOPY文の機能追加)
  • 1999.11.22 : pgbash-1.2.3を公開(SQLOIDシェル変数の追加)
  • 1999.12.25 : pgbash-2.0を公開 (bash-2.03本体を修正してSQL実行機能を追加)
  • 2000.01.07 : pgbash-2.0.1を公開(MB関数リンク、システムメッセージ出力制御追加)
  • 2000.05.16 : pgbash-2.1(bash-2.03) を公開(PostgreSQL-6.5/7.0に対応)
  • 2001.05.01 : pgbash-2.2(bash-2.03/2.04/2.05)を公開(PostgreSQL-6.5/7.0/7.1に対応)
  • 2001.12.15 : pgbash-2.4(PostgreSQL-7.0/7.1/7.2に対応)を公開
  • 2002.02.10 : pgbash-2.4a(bash-2.05aに対応)を公開
  • 2002.05.10 : pgbash-2.4a.1を公開
  • 2002.07.22 : pgbash-2.4a.2を公開
  • 2003.02.10 : pgbash-7.3を公開

◎ 関連ページ


境田雅明<sakaida@psn.co.jp>
Last Modified at 2003/02/10