pgtcl は PostgreSQL サーバとインタフェースを持つクライアントプログラム用の Tcl パッケージです。 これにより、libpq のほとんどの機能を Tcl スクリプトで使用可能になります。
このパッケージは元々、Jolly Chen 氏により作成されました。
Table 3-1 において、pgtcl で使用できるコマンドの概要を説明しています。 これらのコマンドは以下でより詳細に説明されます。
Table 3-1. pgtcl コマンド
コマンド | 説明 |
---|---|
pg_connect | バックエンドサーバとの接続を開きます。 |
pg_disconnect | 接続を閉じます。 |
pg_conndefaults | 接続オプションとそのデフォルト値を入手します。 |
pg_exec | 問い合わせをバックエンドに送信します。 |
pg_result | 問い合わせの結果を操作します。 |
pg_select | SELECT文の結果を繰り返し処理します。 |
pg_execute | 問い合わせを送り、(オプションで) 結果を繰り返し処理します。 |
pg_listen | NOTIFY メッセージ用のコールバックを確立します。 |
pg_on_connection_loss | 予期せず接続が切断された場合のコールバックを確立します。 |
pg_lo_creat | ラージオブジェクトを生成します。 |
pg_lo_open | ラージオブジェクトを開きます。 |
pg_lo_close | ラージオブジェクトを閉じます。 |
pg_lo_read | ラージオブジェクトを読み込みます。 |
pg_lo_write | ラージオブジェクトを書き出します。 |
pg_lo_lseek | ラージオブジェクト内の位置をシークします。 |
pg_lo_tell | ラージオブジェクトの現在のシーク位置を返します。 |
pg_lo_unlink | ラージオブジェクトを削除します。 |
pg_lo_import | Unix ファイルをラージオブジェクトにインポートします。 |
pg_lo_export | ラージオブジェクトを Unix ファイルにエキスポートします。 |
pg_lo_*ルーチンは、PostgreSQL のラージオブジェクト機能へのインタフェースです。 それらの関数は標準的な Unix ファイルシステムインタフェース用のファイルシステム関数を真似して設計されています。 pg_lo_open で返されるファイル記述子が現在のトランザクションでのみ有効ですので、pg_lo_* ルーチンは BEGIN/COMMIT トランザクションブロック内で使用されなければなりません。 pg_lo_import と pg_lo_export は 必ず BEGIN/COMMIT トランザクションブロック内で使用しなければなりません。
Example 3-1 で、このルーチンの使用方法を示す小さな例を示します。
Example 3-1. pgtcl プログラム例
# getDBs : # 指定されたホストとポート番号における、全てのデータベースの名前をアル # ファベット順に取り出します。 # デフォルトは、localhost と 5432 ポートです。 proc getDBs { {host "localhost"} {port "5432"} } { # datnames は結果となるリストです。 set conn [pg_connect template1 -host $host -port $port] set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"] set ntups [pg_result $res -numTuples] for {set i 0} {$i < $ntups} {incr i} { lappend datnames [pg_result $res -getTuple $i] } pg_result $res -clear pg_disconnect $conn return $datnames }