Stew - SQLクライアント

version 2.0


目次


Stewとは何ですか?

Stewは、JDBC接続を使ってデータベースにアクセスするツールです。Javaで書かれています。

2.0で変更された機能

2.0で主に変更された機能は以下のとおりです。

GUIモードで変更された機能は以下のとおりです。

また、ソースコードをすべて書き直しました。1.0との実装レベルでの互換性はほとんどありません。


インストールするには

JRE(Java実行環境)1.4以上がインストールされている必要があります。(1.3で使いたい方は、古いバージョン(1.0)をお使い下さい。)

Stewを実行すると、".stew"ディレクトリが作成され、設定の保存に使用されます。".stew"ディレクトリは、デフォルトではHOMEディレクトリ(実装詳細:システムプロパティ"user.home"のパス)に作成されます。

UNIX系OSの場合

アーカイブを適当なディレクトリに展開します。ここでは"/opt/Stew"とします。

エイリアスを使う場合は、以下のコマンドを実行します。

alias stew="java -jar /opt/Stew/stew.jar"

エイリアスを使わない場合は、以下のスクリプトを記述したファイルを"stew"という名前でパスの通っているディレクトリに保存し、実行権限を与えてください。

#!/bin/sh
java -jar /opt/Stew/stew.jar $*

コマンドを実行してみましょう。"stew -v"でバージョン情報が表示されたらインストール完了です。

Windowsの場合

アーカイブを適当なディレクトリに展開します。ここでは"C:\Program Files\Stew"とします。

stew.exeを実行します。stew.exeを使用すると、自動的にGUIモードになります。

stew.exeを使用しない場合は、以下のコマンドを記述したファイルを"stew.bat"という名前でパスの通っているディレクトリに保存してください。("% *"はXP、2000、NTでしか使えないので注意。)

java -jar "C:\Program Files\Stew\stew.jar" %*

コマンドを実行してみましょう。"stew -v"でバージョン情報が表示されたらインストール完了です。

アンインストールするには

インストールで設定したもの全てと、".stew"ディレクトリを削除すればアンインストール完了です。


使い方

Stewを使用するには、JDBC接続が可能なデータベースと、JDBCドライバが必要です。接続方法の詳細については、各データベースの説明書などを参照してください。

Stewの使い方には、対話方式と、一行完結方式(One-Liner)があります。いずれもStew内部コマンドを使用しますが、Stew内部コマンドの詳細は次の項を参照してください。

対話モード

対話モードでは、コマンド入力待ち状態になった時にコマンドを入力し、処理が終わると再びコマンド入力待ちになります。

FTPコマンドのようなプログラムの操作に似ているかもしれません。

一行完結モード(One-Liner)

Stewの処理が一行の入力で完結します。"stew"コマンドを設定していると仮定すると、次のような形式で実行します。

$ stew <connector-id> <command>

実行すると、<connector-id>の接続設定で接続を開始し、その接続を使用してコマンドを実行します。コマンド実行後、接続を切断して終了します。

このモードでは、ご利用のshell環境の制約(例えば、ワイルドカード,リダイレクト など)を受けますのでご注意ください。


コマンド(Stew内部コマンド)

組み込みコマンドは、Stewから切り離すことができないコマンドです。(実装詳細:Commandクラスのサブクラスではなく、Command.invokeメソッドに直接書かれている処理です。)

(実装詳細:Commandクラスのサブクラスによる処理です。)

connect - データベースに接続する (組み込みコマンド)

> connect <connector-id>

> -c <connector-id>

予め用意した接続設定を使用して、データベースに接続します。対話モードでは、disconnectまたは強制的に切断されるまで、接続が維持されます。

すでに接続中の場合は、その接続を切断してから接続を行います。

disconnect - データベースとの接続を切断する (組み込みコマンド)

> disconnect

> -d

データベースとの接続を切断します。

commit - トランザクションのコミット (組み込みコマンド)

現在のトランザクションでの変更をコミットします。

コミットする際は、誤って必要なデータを削除しないよう注意してください。

rollback - トランザクションのロールバック (組み込みコマンド)

現在のトランザクションでの変更をロールバックします。

exit -終了 (組み込みコマンド)

> exit

Stewを終了します。確認待ちは行いません。

select - SELECT文の実行

> <SQL-SELECT-STATEMENT>

update - UPDATE文の実行

> <SQL-UPDATE-STATEMENT>

insert - INSERT文の実行

> <SQL-INSERT-STATEMENT>

delete - DELETE文の実行

> <SQL-DELETE-STATEMENT>

count - 件数のみ表示

> count <テーブル名> [<WHERE句>]

指定したテーブルの件数を表示します。(実装詳細:このコマンドは SELECT COUNT(*) FROM <table-name> [<where-phrase>] と同じSQLを発行しますが、件数のみ表示します。)

> count test
12575 件 ヒットしました。
>

load - ファイルから実行

> load [<SQLファイル> | <データファイル> <テーブル名> [ HEADER ]]

指定されたファイルを読み込んで、SQLを実行します。

パラメータが1個の場合は、ファイルをSQL文と見なして実行します。

パラメータが2個以上の場合は、ファイルをデータファイルと見なして、インポートを実行します。拡張子が.csvの場合は、CSV形式として読み込みます。それ以外の場合は、タブ区切りテキスト形式として読み込みます。

import - ファイルのインポート

> import [<データファイル> <テーブル名> [ HEADER ]]

ファイルをデータファイルと見なして、インポートを実行します。拡張子が.csvの場合は、CSV形式として読み込みます。それ以外の場合は、タブ区切りテキスト形式として読み込みます。

(実装詳細:現時点では、loadのパラメータ2個以上指定した時と同じ動作です。)

export - 検索結果のエクスポート

> export <ファイル> [ HEADER ] [command(select|find|report)]

指定したファイルに、コマンドの検索結果を出力します。ファイルの拡張子によって、出力されるタイプが自動的に選択されます。

time - 実行時間計測

> time [<回数>] <SQL文>

指定したSQL文を実行し、その実行時間を計測して表示します。回数が指定された場合は、回数分SQLを繰り返し実行して、「合計」「平均」「最大」「最小」を集計します。回数を指定しない場合は、1回の実行時間を表示します。

> time select * from test
  実行時間 : 0.050 秒
> time 100 select * from test
  合計 : 1.870 秒
  平均 : 0.018 秒
  最大 : 0.160 秒
  最小 : 0.000 秒
>

find - テーブル名検索

> find <テーブル名パターン> [<テーブル種別パターン> [<スキーマ名パターン> [<カタログ名パターン> [ FULL ]]]]

参照可能なテーブルの一覧を表示します。"パターン"というキーワードを含むパラメータは、ワイルドカード(*,?)が指定できます。

report - データベース情報表示

> report - | <テーブル名> [ PK | INDEX ]

接続中のコネクションに関する情報を表示します。

bind - バインド変数によるSQLの実行

> bind <SQL文>:<値のカンマ区切りリスト>

バインド変数を指定してSQLを実行します。(実装詳細:java.sql.PreparedStatementによる実行。)

":"以降のパラメータは、空白をパラメータと見なすので注意してください。

GUIモード・メニュー

GUIモードのメニューについての説明です。

ファイル(F) - 新しいウィンドウ(N) Ctrl-N

新しいウィンドウを開きます。新しいウィンドウは、元のウィンドウとは独立した接続で処理が行われます。

ファイル(F) - 閉じる(C) Ctrl-W

ウィンドウを閉じます。すべてのウィンドウを閉じると、アプリケーションは終了します。

ファイル(F) - ディレクトリ変更(D) Ctrl-D

現在の作業ディレクトリを変更します。この処理は、ファイルの読み込みや書き込みを行うコマンドに影響します。

ファイル(F) - エクスポート(E)

検索結果をファイルに出力します。exportコマンドとは独立した処理です。検索結果が表示されている場合のみ有効です。

ファイル(F) - 終了(X) Ctrl-Q

アプリケーションを終了します。確認ダイアログが表示され、"はい"を選択すると終了します。

編集(E) - 切り取り(T) Ctrl-X

選択範囲をクリップボードにコピーして、選択された部分を削除します。(基本的に、一般的なアプリケーションと同じ処理です。)

編集(E) - コピー(C) Ctrl + C

選択範囲をクリップボードにコピーします。(基本的に、一般的なアプリケーションと同じ処理です。)

編集(E) - 貼り付け(P) Ctrl-V

カーソル位置にクリップボードの内容を貼り付けます。(基本的に、一般的なアプリケーションと同じ処理です。)

編集(E) - 入力欄に移動(G) Ctrl + G

コマンドを入力できるようにするため、入出力欄の末尾にカーソルを移動します。

編集(E) - メッセージのクリア

入出力欄のメッセージをクリアします。

表示(V) - ステータス バー(B)

選択された場合、ウィンドウの下部にステータスバーを表示します。

設定は保存されます。

表示(V) - 列番号を表示(C)

選択された場合、検索結果の列名に番号を付けます。

設定は保存されません。

表示(V) - 列幅を拡大(W) Ctrl + "."

検索結果の列幅をそれぞれ1.5倍に拡大します。

表示(V) - 列幅を縮小(N) Ctrl + ","

検索結果の列幅をそれぞれ2/3に縮小します。

表示(V) - 列幅を調整(A) Ctrl+/

検索結果の列幅を自動調整します。次項の「列幅自動調整」で選択されたモードで調整されます。

表示(V) - 列幅自動調整(M)

検索結果表示時に、検索結果の列幅を自動調整するモードを選択します。

設定は保存されます。

表示(V) - 最大表示件数の設定(L)

検索結果欄に表示する件数の最大値を設定します。

設定は保存されます。

表示(V) - フォント(F) Ctrl + ";"

フォント変更ダイアログを表示します。

設定すると、検索結果欄とメッセージ欄のフォントが変更されます。

接続(C) - 接続の実行(C) Ctrl + " "(space)

接続リストを表示します。接続リストで接続したい接続IDを選択して"了解"を押すと、connectと同じ処理が実行されます。

接続(C) - 切断(D)

接続を切断します。disconnectコマンドと同じです。

接続(C) - 暗号鍵設定(K)

接続設定のパスワード暗号化に使用される秘密鍵を設定します。

接続(C) - 接続設定(E)

接続設定ダイアログを表示します。

コマンド(M) - 実行(X) (shortcut : Ctrl + "M")

コマンドを実行します。入出力欄でエンターキーを押したのと同じ効果があります。

コマンド(M) - 前の履歴(P) (shortcut : Ctrl + "K")

コマンド履歴を1つ遡ります。

コマンド(M) - 次の履歴(N) (shortcut : Ctrl + "J")

コマンド履歴を1つ進みます。

ヘルプ(H) - ヘルプを表示(H)

ヘルプを表示します。(実装詳細:カレントディレクトリにMANUAL_jaファイルが必要です。)

ヘルプ(H) - Stew について(A)

バージョン情報ダイアログを表示します。

GUIモード・その他

結果テーブル

検索コマンドを実行したときに、結果を表示します。最左列は行番号が表示されます。列幅自動調整が設定されていれば、列幅が自動的に調整されます。

入出力欄

コマンドの入力とメッセージの出力が同居する、コマンドラインのようなインターフェイスです。

エンターキーを押すと、プロンプトから末尾までがコマンドとして解釈され実行されます。カーソルが末尾にない場合は、カーソルが末尾に移動します。プロンプトより前の部分は編集不可となっています。

ステータスバー

直前のコマンドとその実行時間が表示されます。実行時間は、timeコマンドとは異なり、コマンドの開始から終了までの所要時間となります。

コンテキストメニュー

マウスの右クリックにより、そのコントロールに即した機能のメニューが表示されます。

結果テーブルのヘッダ部、データ部、入出力欄で機能が異なります。

ヘッダ部ではソート機能、データ部ではクリップボードからデータ挿入などがあります。

設定保存

以下の設定が、ウィンドウを閉じたとき(終了したときではない)に保存され、次回以降のウィンドウの設定として使用されます。

プロパティ

起動時に値を決定できるパラメータです。Javaのシステムプロパティ(Javaの-Dオプション)で指定するか、stew.propertiesファイルに記述します。

"設定値"は、設定する値についての説明です。設定値のカッコ内の値は既定値です。カッコがないものは既定値がありません。

net.argius.stew.properties - プロパティファイルの場所

設定値:ファイルまたはディレクトリのパス

stew.propertiesファイルを優先的に検索する場所を指定します。

指定されたパスがファイルの場合は、そのファイルをstew.propertiesの代わりにプロパティファイルとして読み込みます。指定されたパスがディレクトリの場合は、そこにstew.propertiesがあるものとみなされます。

指定されない場合は、クラスパス、システムディレクトリの順に検索されます。無い場合はプロパティファイルが無いものとみなされます。

net.argius.stew.directory - 作業ディレクトリ

設定値:ディレクトリパス(カレントディレクトリ)

コマンドで使用するディレクトリの開始時のパスを指定します。デフォルトシステムディレクトリとは異なります。

net.argius.stew.Launcher.class - Launcherの指定

設定値:完全修飾クラス名(net.argius.stew.StandardInputLauncher)

Launcherは、アプリケーションの起動、入力、コマンド実行、出力の管理を行う機能です。ここではそのクラス(実装詳細:net.argius.stew.Launcherインタフェースを実装している必要があります。)を指定します。デフォルトは、標準入出力Launcherです。

net.argius.stew.OutputProcessor.class - OutputProcessor

設定値:完全修飾クラス名(net.argius.stew.StandardOutputProcessor)

OutputProcessorは、出力制御を行う機能です。ここではそのクラス(実装詳細:net.argius.stew.OutputProcessorインタフェースを実装している必要があります)を指定します。デフォルトは、標準出力制御です。

net.argius.stew.query.timeout - クエリのタイムアウト値

設定値:整数秒(0)

コマンド内のクエリが発行時に設定するタイムアウト値を指定します。0以下はタイムアウト未指定とみなされます。

(実装詳細:java.sql.Statement#setQueryTimeoutに設定する値。)

net.argius.stew.gui.ResultSetTableMonitor.timeout - ResultSetTableMonitorのタイムアウト値

設定値:整数秒(10)

GUIの結果テーブルを編集した際に、バックグラウンドで発行されるクエリが使用するタイムアウト値です。

Logger用

デバッグ用のLoggerに関するプロパティです。プロパティファイルに直接は指定できません(-Dオプションで指定可能)。

標準のLoggingAPI(java.util.logging)を使用したい場合は、以下のシステムプロパティを設定してください。LoggingAPI自体の設定は、APIドキュメントを参照してください。

 -Dnet.argius.logging=true
 -Dnet.argius.logging.level=TRACE
 -Dnet.argius.logging.class=net.argius.logging.LoggingApiWrapper

2007 argius