STU - ユーザーマニュアル

for STU ver. 1.00

このマニュアルは画像を使用していないため、分かりづらい箇所があるかもしれませんが、ご了承ください。

index

概要

このツールは、JDBCを使用してDB(データベース)との通信を行うSQLクライアントです。

JDBCのテスト用に開発されたこともあって、操作性よりも拡張性に重点を置いています。

注意:重要なパスワードの管理には充分注意してください! このツールではパスワードを平文で保存します。

特徴

操作はコマンドライン
基本操作は、コマンドラインにコマンドを入力することで行います。
特定のデータベースシステムに依存しない
ほとんどの処理をJDBCのインターフェイスのみで実現しています。また、特定のDBMSに依存する機能はほとんどありません。(一部、特定のデータベースSQLのキーワード変換処理が含まれています。)
データベース操作機能とインターフェイスが分離
データベースの操作に関する機能と、入出力に関するインターフェイス部分が分離されています。これにより、主機能を変更せずにインターフェイスを変えることができます。標準のパッケージには、コンソールとGUIのものが1点ずつ含まれています。(プロパティを参照)
JDBCドライバ以外の拡張ライブラリは不要
JDBCドライバを除けば、標準ライブラリだけで動作します。
I18N対応
多言語対応されています。但し、パッケージに含まれるのは英語、日本語のみです。(さらに、マニュアルは日本語版のみ。)

追記事項

STUという名称は、SQL Terminal Utilitiesの略から命名されました。

その後、STUをもじってStew(=シチュー)という別名がつけられました。

実行環境

Java2が実行できる環境であれば、プラットフォームは問いません。

以下の条件を満たしている必要があります。

インストール

解凍したファイル一式を、好きなディレクトリに配置します。ここをインストールディレクトリと呼ぶことにします。

アンインストール

インストールディレクトリを削除します。GUIモードの場合、ホームディレクトリに.stuというディレクトリができますので、これも削除します。

アプリケーション起動

次に、アプリケーションを起動します。

GUIモード

Stewパッケージの場合、stew.exeを実行してください。それ以外の場合、以下のように記述した起動スクリプトを作成するか、直接コマンドを実行します。

java -classpath "stu.jar:stu-standard.jar" net.argius.stu.standard.StandardView

(Windowsの場合、パスのセパレータ":"を";"に変更してください。)

起動すると、ウィンドウが1つ表示されます。ウィンドウには、ペインが上下に2つあり、上が検索結果ペイン、下がメッセージペインとなっています。

コンソールモード

以下のように記述した起動スクリプトを作成するか、直接コマンドを実行します。

java -jar stu.jar

起動すると、次のような入力待ち状態になります。

$ java -jar stu.jar
STU - SQL ターミナル ユーティリティ
version 1.0
 >

接続設定

設定には、JDBCドライバのライブラリファイルのパス、JDBCドライバクラスのFQCN(java.sql.Driverインターフェイスの実装クラスの完全修飾名)、接続情報のセットが必要です。

GUIモードの場合、メニューの[接続(C)]-[接続設定の編集(E)]を使って編集できます。直接編集する場合は、インストールディレクトリにある接続設定ファイル(connectors.propertiesファイル)を編集します。以下に、接続設定の例を示します。

PostgreSQLに接続する例

#--- drivers ---
net.argius.stu.jdbc.drivers.path = /shares/lib/postgresql.jar
net.argius.stu.jdbc.drivers.name = org.postgresql.Driver

#--- connectors ---
POST.url      = jdbc:postgresql://localhost:5432/post
POST.user     = user
POST.password = pass
POST.userspecified = false

上記の例では、接続名"POST"がローカルのPostgreSQLサーバのpostインスタンスに接続する設定になっています。userspecifiedは、trueを設定すると、userpasswordの設定が常に使用されます。falseを設定すると、userpasswordを毎回入力するようになります。

userspecified == falseは、コンソールモードには対応していません。

操作方法

基本的な機能として、コマンドによりDBへアクセスします。コマンド名は、大文字小文字は無視されます。終端文字は不要です。

基本コマンド

コネクションやスレッドに対しての操作です。

記号の説明
<keyword>   --- keywordの意味するパラメータを指定することを示します
[<keyword>] --- keywordが省略可能であることを示します
[<key1>|<key2>] --- key1key2のどちらかを指定することを示します

CONNECT

CONNECT <connector-name>

DBに接続します。予め、プロパティに定義したDB接続情報を使用してコネクションを取得します。既に接続中の場合は、そのコネクションを破棄してから接続します。

接続した際、自動コミットモードはOFFに設定されます。

DBによっては、自動コミットモードが変更できないものがあります。

DISCONNECT

DISCONNECT

現在接続中のコネクションを切断します。

COMMIT

COMMIT

トランザクションの変更内容を実データへ反映します(コミット)。

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

ROLLBACK

ROLLBACK

トランザクションの変更内容を破棄します(ロールバック)。

CLOSE

CLOSE

現在のスレッドを終了させます。

標準機能では、EXITコマンドと同じです。拡張機能(GUIなど)では、複数のスレッドで動作させることができるので、実行中のスレッドだけを終了させる場合に使用します。

RELOAD

RELOAD

プロパティファイルから設定を再取得して反映させます。起動後に設定を変更した場合に使用します。但し、net.argius.stu.systemで始まるプロパティとstuで始まらないプロパティは対象外(再起動が必要)です。

EXIT

EXIT

アプリケーションを終了します。

拡張コマンド

組込みでないコマンドです。

SELECT

SELECT <SQL-statement>

SELECT文を実行します。

UPDATE

UPDATE <SQL-statement>

UPDATE文を実行します。

INSERT

INSERT <SQL-statement>

INSERT文を実行します。

DELETE

DELETE <SQL-statement>

DELETE文を実行します。

COUNT

COUNT <table-name> [<where-phrase>]

指定したテーブルの件数を表示します。

このコマンドは SELECT COUNT(*) FROM <table-name> [<where-phrase>] と同じSQLを発行しますが、件数のみ表示します。

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

EXPORT

EXPORT <file> [<SELECT-statement>|<table-name>]

ファイル名に拡張子.htmまたは.htmlが指定された場合は、HTML形式で出力します。それ以外の場合は、CSV形式で出力します。

SELECT文が指定された場合は、検索結果をファイルに出力します。テーブル名が指定された場合は、テーブルの情報を出力します。

TIME

TIME [<number-of-times>] <SQL-statement>

指定されたSQL文の実行時間を計測します。単位はミリ秒です。回数が指定された場合、回数分SQLを発行して「合計」「平均」「最大」「最小」を集計します。

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

複数回実行した場合、RDBMSによってはSQLがキャッシュされてしまう為、実行時間が意図せず短縮されてしまうことがあります。

FIND

FIND <table-name-pattern> <table-type> [<schema-name-pattern> [<catalog-name> [FULL]]]

接続中のコネクションで参照可能なテーブルの一覧を表示します。

patternというキーワードを含むパラメータは、ワイルドカード(*)が指定できます。

table-typeには、TABLE, VIEW, SYSTEM, TEMPORARY, ALIAS, SYNONYMのいずれかを指定してください。複数指定したい場合は、スペース以外(ハイフンなど)の文字列でつなげて指定してください。(例:TABLE-VIEW)

 > find * TABLE
NAME             TYPE             SCHEME           CATALOG         
================ ================ ================ ================
samples          TABLE            public                           
test             TABLE            public                           

2 件 ヒットしました。
 >

REPORT

REPORT [ - |<table-name> [<option>]]

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

-(ハイフン)が指定された場合は、DBとJDBCドライバの名称とバージョン、接続先のアドレスを表示します。

table-nameが指定された場合は、テーブルの列情報が表示されます。

optionが指定された場合は、pkを指定するとプライマリキーの一覧が、indexを指定するとインデックスキーの一覧が、それぞれ表示されます。

 > report -
  製品名              : PostgreSQL
  製品バージョン      : 7.x.x
  ドライバ名          : PostgreSQL Native Driver
  ドライババージョン  : PostgreSQL 7.x.x
  接続先アドレス      : jdbc:postgresql://localhost:5432/post
 > report test

順序   列名             NULL可     型               サイズ
==== = ================ ========== ================ ======
   1   count            YES        bpchar                2
   2   memo             YES        varchar              64
   3   starttime        YES        timestamp             8

3 件 ヒットしました。
 > 

LOAD

LOAD [<sql-file> | <csv-file> <table-name>]

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

第2引数が指定されていない場合は、SQLが記述されたファイルとみなし、ファイルの内容をSQLとして実行します。

第2引数が指定されている場合は、CSVファイルとみなし、指定されたテーブルにCSVの内容を追加(INSERT)します。

BIND

BIND <sql> : <comma-separated parameters>

バインドメカニズムによるSQLを実行します。

このコマンドでは、引数をコロンで区切ります。

第1引数には、プレースホルダ'?'を含むSQL文を指定します。

第2引数には、パラメータをカンマ区切りリストで指定します。コロンの直後にスペースがあると、最初のパラメータにスペースが付いてしまうので注意してください。

 > bind select * from test where key=? :123

key name
=== ================
123 test

1 件 ヒットしました。
 > 

GUIモード

GUIモードの場合でも、基本的な操作はコマンドで行いますが、いくつかの機能はGUI上で操作できます。

検索結果が表示されたテーブルの値を変更しても、元データには反映されません。

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

コマンドで相対パスを指定した場合の、カレントディレクトリを設定します。

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

新しいウィンドウを開きます。これらのウィンドウは別スレッドで動作しますので、それぞれ別のコネクションで処理されます。

ファイル(F) - ウィンドウを閉じる(W)

新しいウィンドウを開きます。これらのウィンドウは別スレッドで動作しますので、それぞれ別のコネクションで処理されます。開いているウィンドウが1つの場合は、アプリケーション終了処理(次項参照)となります。 (コマンドCLOSEと同じ。)

接続(C) - DBに接続(C)

接続名一覧ダイアログを表示します。ここで選択した接続名が、コマンドCONNECTに渡されます。

接続(C) - 接続を切断(D)

DBとの接続切断します。 (コマンドDISCONNECTと同じ。)

接続(C) - 接続設定の編集(E)

接続設定を専用ダイアログで編集できます。

表示(V) - 列幅を拡大(W)

表示されている検索結果テーブルの各カラム幅を、それぞれ25%ずつ拡げます。

表示(V) - 列幅を縮小(N)

表示されている検索結果テーブルの各カラム幅を、それぞれ25%ずつ縮めます。

表示(V) - ラベルにあわせて列幅を調整(F)

表示されている検索結果テーブルの各カラム幅を、カラム名の文字数に合わせて揃えます。

表示(V) - フォントを拡大(L)

結果ペインとメッセージペインのフォントサイズを拡大します。

表示(V) - フォントを縮小(S)

結果ペインとメッセージペインのフォントサイズを縮小します。

表示(V) - メッセージ欄をクリア(R)

結果ペインのバッファをクリアします。

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

バージョン情報を表示します。

プロパティ

プロパティを変更することで、いくつかの動作をカスタマイズできます。

システムプロパティ

基本機能についての設定を調整します。これらは、RELOADコマンドの対象外です。

net.argius.stu.locale.language

net.argius.stu.locale.country

通常は使用しません。

使用するロケールを設定します。ロケールに対応する言語のメッセージがロードされます。(詳しくは、Java2 SE API ドキュメントjava.util.Localejava.util.ResourceBundleを参照してください。)既定値はデフォルトロケールです。

このバージョンでは、enja_JPのみ定義されています。(ロケールが不明の場合はenと同じものが適用されます。)

ユーザプロパティ

ユーザの環境に関連する設定を調整します。これらは、RELOADコマンドで変更できます。

net.argius.stu.prompt.username

net.argius.stu.prompt.connectorname

プロンプトの表示形式を設定します。プロンプトは、<username> @ <connectorname>の形式で表示されます。それぞれ、truefalseで表示・非表示を切り替えられます。既定値はいずれもfalseです。

net.argius.stu.connector.properties

接続設定の読込み元を、指定した外部ファイルに設定します。指定しない、または指定したパスが不正の場合は、プロパティファイル自体に接続設定があるものとします。

net.argius.stu.prompt.multiline

正常な動作は保証されていません。

trueを指定すると、入力を複数行に分けて行えるようにします。入力を完了する場合に、終端に;(セミコロン)をつけるとコマンドが実行されるようになります。但し、組み込みコマンドは;を指定しない場合も1行で実行します。既定値はfalseです。

net.argius.stu.statement.timeout.seconds

ログインおよびSQL実行の待ち時間(秒数)を設定します。(具体的には、java.sql.DriverManager.setLoginTimeout(int)java.sql.Statement.setQueryTimeout(int)が実行されます。)既定値は0(無制限)です。

net.argius.stu.statement.result.limit

検索時に出力領域に表示するレコード件数の上限を設定します。既定値は0(無制限)です。

net.argius.stu.command.export.css.url

net.argius.stu.command.export.css.path

拡張コマンドEXPORTのHTMLに使用されるスタイルシートのパスまたはURLを指定します。スタイルシートは直接HTMLに書き出されます。指定しない場合は、デフォルトスタイルシートが適用されます。