いつもSI Object Browserをご利用いただきありがとうございます。
SI Object Browserには、「とても便利だけどヘルプの片隅にしか書かれていない」という理由であまり知られていないテクニックが数多く存在します。そこで今回は、そのような技の中から、特に使ってほしい便利技ベスト10をご紹介します!
SQL実行画面からすぐにテーブル定義を確認する
SQLを書いているときに、「あれ、この列のデータ型って何だっけ?」「どんなデータが入っていたんだっけ?」と思うことがあると思います。そんなときは対象のテーブルを検索して定義情報を確認していると思いますが、実はSQL画面でテーブル名を文字選択して右クリック→「定義情報ジャンプ」を選択するだけで、すぐにテーブル画面を表示することができます。
画面1.ポップアップメニューを表示したSQL実行画面
すると文字選択したテーブル名が検索され、対象のテーブル画面が開きます!列のデータ型の定義情報やデータの確認がすぐに確認可能です!もし別スキーマのテーブルを開きたい場合は「スキーマ名.テーブル名」の部分を文字選択後、「定義情報を開く」で表示できます。
画面2.テーブル画面
テーブルデータの件数や合計値などの集計情報を取得する
テーブル画面の「データ」タブではレコードの内容を見たり検索することができても、件数は調べられないと思っていませんか?実はテーブル画面のデータタブでは列名を右クリックするとポップアップメニューが表示され、ポップアップメニューある「集計情報を表示」>「件数」から調べることができるんです!
画面3.テーブル画面>データタブで列を右クリックした時のポップアップメニュー
「件数」を押した後は、以下のようにメッセージボックスで件数表示されます。
画面4.集計情報を表示>件数の表示結果
他にもこのポップアップメニューから数値列の最大、最小や合計値、平均値を調べることができます!
オブジェクトリストの表示を中断する
「やってしまった…」。SI Object Browserを操作していてそう思うことの1位は「オブジェクトリストでデータベースアイコンを押したら画面がフリーズした」ではないでしょうか?この操作をすると、データベースの全てのオブジェクトを検索するため、すごい時間がかかってしまうんですよね…しかしご安心を。実は、このとき「Escape」キーを押すと検索をキャンセルしてフリーズ状態を解消することができるのです!
画面5.データベースアイコンを押した後、表示を中断した画面
ちなみに開発者いわく、Escapeキーを連打するのではなく、押し続ける方がよいそうです。実はこの操作方法は、画面左下のステータスバーにもこっそり表示されていますが、気付かない方も多いと思いますので掲載させていただきました。
画面6.「データベース」アイコンを押した後のステータスバー
実は、データベースアイコンを押したときにこのフリーズ現象を起こさなくする方法もあります。データベースのアイコンの上の方にある「データベース選択時にオブジェクト一覧を表示する」オプションをOFFにするとデータベースアイコンをクリックしても全オブジェクトを検索しないようになります。同様に、その隣のスキーマのアイコンをOFFにすることで、ツール上のスキーマのアイコンを押した際にそのスキーマ内の全オブジェクト検索をしないようにすることもできます。 画面7.「データベース選択時にオブジェクト一覧を表示する」オプション |
テーブル一覧をExcelやエディタ等に貼り付ける
開発や保守運用をしていると、あるスキーマのテーブルの一覧をExcelやエディタに貼り付けたい時がありますよね?実は簡単にできる方法があります。まず、オブジェクトエクスプローラ(ログイン後に表示されるテーブルなどの一覧画面です)にてテーブルを選択して、右クリック→コピーを選択するか、または「Ctrl+C」キーを押します。
画面8.オブジェクトリストで右クリックした時のポップアップメニュー
このまま、オブジェクトエクスプローラで「Ctrl+V」キーを押すとテーブルのコピー(複製)となるのですが、そうではなく、SQL実行画面で「CTRL+V」キーを押します。するとテーブル一覧が貼り付けされます!
画面9.SQL実行画面に貼り付けた結果
同じ方法で、Excelや外部エディタなどにテーブル一覧を貼り付けることができます!
キーマクロ機能を使う
SI Object Browserでは「サクラエディタ」や「秀丸」などのエディタソフトにある「キーマクロ機能」が使えるのをご存知でしたか? キーマクロ機能とは、キーボードの一連の操作を記憶させることで、同じ操作を連続で実行する機能です。これを使えばある文字列をSQL文やソースコードに変換するなど、様々な加工ができます。試しに、さきほどの「テーブル一覧をExcelやエディタ等に貼り付け」のテクニックで作成したテーブル一覧(画面9)に対して、さらにキーマクロ機能でSELECT文に変換してみましょう。まず、SQL実行画面上で先頭行のはじめの位置にフォーカスを移動し、右クリックメニュー>「マクロ記録開始」を選択するか、「Shift+Ctrl+M」キーを押します。
画面10.SQL実行画面のポップアップメニュー
以降のキーボードの入力操作が記録されるようになりますので以下の通りキーボード入力を行います。
① 「SELECT FROM 」と入力します。 ※最後にスペース文字を入れてください
② 「↓」キーを押して次の行に移動します。
③ 「Home」キーを押して行の先頭に移動します。
④ 「/」当入力し、続けてEnterキーを押します。
正しく入力すると画面11のようになるはずです。この後、再び右クリックし、ポップアップメニューから「キーマクロ記録を終了」を選択するか、「Ctrl+Shift+M」キーを押しましょう。
画面11.キーマクロを記録した後の状態
これで①~④のキーボード操作が保存されましたので後は実行あるのみです!実行するには右クリックして表示されるポップアップメニューより「キーマクロ実行」を選択するか、「Shift+Ctrl+L」キーをクリックします。実行するたびにさきほど記憶したキーボード操作が自動実行されますのでテーブル数の分だけ実行を繰り返します。すると、あら不思議!すべてのテーブルに対してSELECT文を実行するSQLができあがりました!
画面12.キーマクロを連続実行した後の状態
なお、このように複数のSELECT文をまとめて実行するとタブ分けされた上で、すべてのテーブルのデータを確認することができます。
画面13.キーマクロを連続実行した後の状態
今回は全テーブルに対するSELECT文を発行する例をご説明しましたが、工夫次第でいろいろなスクリプトが作成できますのでぜひご活用ください!
今回はSQL実行画面のポップアップメニュー、ショートカットキーを使ってキーマクロを記録、実行する方法をご紹介しましたが、Oracle版のVer.14以降では、SQL画面上にマクロ関係のツールボタンが追加されていますので、こちらからもキーマクロの記録や実行操作が可能です。 画面14.SQL実行画面のツールボタン |
SQL、テーブル画面でバインド変数を使う
また、SI Object BrowserのSQL実行画面では「バインド変数」を使うことができます。例えば、SQLのWHERE句の後などにつける値(リテラル)の部分を「:変数名」の形式で書いてみましょう。画面15の例では「:DEPT_CODE」という名前にしていますが、コロンのあとの変数名は何でもOKです。この状態でSQLを実行すると、画面の右側に値とデータ型の設定画面が表示されます。
画面15.バインド変数を使用したSQL実行画面
続けて、こちらの設定画面に値とデータ型を入力して再度「実行」ボタンを押すと、その値が代入されたかたちで実行結果を取得することができます。
画面16.バインド変数に値を代入して実行後のSQL実行画面
この方法はSQL画面だけでなく、テーブル画面でも使えます。テーブル画面の場合はデータタブの上部にある検索条件欄で同様に:付きで実行します。同じくバインド変数値の設定欄が表示されますので入力して検索できます。
画面17.テーブル画面>データタブの検索条件欄にバインド変数を使用した例
SQL文にバインド変数を使う1番のメリットは「履歴として残るので再実行が容易にできる」点です。SQL画面であれば、「前へ」ボタンや「履歴」ボタン、テーブル画面であれば、検索条件のプルダウンから以前実行したSQLや検索条件が再表示できますので、値を変えて簡単に再実行ができます。 また、その他にも「値を変えてもメモリ(ライブラリキャッシュ)にある実行計画が再利用できる」「.NETやJavaなどのプログラムから発行するSQLと同じ実行計画でテストができる」などのメリットもありますので、ぜひ活用いただけたらと思います。
SQL画面でショートカットキーでコード補完を呼び出す
Visual Studioなどのエディタにもよくあるコード補完(コードアシスタント)機能。SI Object BrowserのSQL画面でもスキーマ名やテーブル名に続けて「.」を押したときに表示されますが、実は「Ctrl+Space」キーを押すことでいつでも呼び出すことができます。
画面18.コード補完機能を呼び出した状態のSQL実行画面
文字の途中までいれてCtrl+Spaceを押すと入力した文字に前方一致するオブジェクトのみに絞り込まれ表示されますので非常に便利です!
ちなみに、「Ctrl+S」キーを押すとどの画面からでもSQL実行画面を呼び出すことができます、あわせて覚えておくと便利です! |
制約をまとめて無効にする
世の中には「ありがた迷惑」という言葉がありますが、データベース機能の中で1番のありがた迷惑といえば、「外部キー制約(参照整合性制約)」ではないでしょうか。外部キー制約は複数のテーブル間でデータの不整合がおきないようチェックしてくれる反面、「開発途中につくったデータをいったん全部消して綺麗にしたい」という時に簡単に消せなくなってしまうからです。私もこの外部キー制約エラーに何度も邪魔されました…
しかし、実はSI Object Browserでは以下の手順で一時的に制約をなくす(無効にする)ことができます!まず、オブジェクトリストの左ツリーにある「CONSTRAINT」をクリックしましょう。制約の一覧が表示されます。主キー制約などの外部キー制約以外の制約も出ていますが、もし外部キー制約だけに絞りたい場合は「制約タイプ列」を押してソートの上、「制約タイプ」列が「R」だけの行を選択します。その後、右クリックすると「制約を無効にする」というメニューがありますのでこちらを選択します。
画面19.オブジェクトリスト>CONSTRAINTのポップアップメニュー
これで制約が一時的に無効となり、データメンテナンス中にエラーが出なくなります!同ポップアップメニューの「制約を有効にする」より有効に戻すことができますので、データのメンテナンス後は、忘れずに元に戻してくださいね。
ローカルのインスタンスに接続する(Oracle版のみ)
データベース接続系の便利技としてSI Object BrowserのOracle版でローカルのインスタンスに簡単に接続する技もご紹介します。例えばSQL*Plusだと「sqlplus scott/tiger」のように@以降のデータベースを入れずにローカルのインスタンに接続できますが、SI Object Browser では「データベース」名が必須のため、できないと思ってしまいますよね。しかし、以下の図のように「<LOCAL>」と入力すればローカルの既定のインスタンスに接続ができます!
画面20.ログイン画面
ローカルに接続するときはこの方法を使うことで、わざわざtnsnames.oraの設定をしなくても接続できます!なお、Oracle版以外の場合は普通に「サーバー名」の個所に「LOCALHOST」と入れていただければOKです。
製品の起動と同時にデータベースに接続する
最後に「はじめのデータベース接続が面倒くさい」というあなた向けに、起動と同時に接続する方法をご紹介します。まず、Windowsのエクスプローラを使って、SI Object Browserのショートカットアイコンを作成しましょう。インストールディレクトリ(デフォルトは「C:\Program Files\OB●です。●はバージョンが入ります。)の中にあるObject BrowserのEXEファイルのアイコンを右クリックして、ショートカットを作成します。
画面21.エクスプローラでSI Object Browserのインストールディレクリを開いた画面
次に、このコピーしたショートカットアイコンを右クリックして、プロパティを表示し、画面21のようにリンク先の最後に「/u=ユーザー名/パスワード@データベース名」の形式で接続情報を追加します。(SI Object Browser起動後のログイン画面にある「接続リスト」に同ユーザー、同データベースが登録されている場合は「/パスワード」はなくてもOKです。)また、もしSYSDBA権限で接続したい場合はさらに後に「/SYSDBA」を付与してください。
画面22.SI Object Browserの起動アイコンのプロパティ
上記設定後、ショートカットアイコンをダブルクリックすると、ログイン画面を省略しデータベースを接続した状態でSI Object Browserが表示されます!接続するデータベースが決まっている場合に使えそうなテクニックですね。ちなみになぜこの機能を実装したのか開発者の方に聞いたところ、「SI Object Browserの開発時に毎回データベース接続するのが面倒だった」というのが理由だそうです…
いかがでしたでしょうか。今回SI Object Browserの開発チームの方からヒアリングした内容から、厳選してベスト10の技をご紹介しました。1つ1つは細かなテクニックですが、日頃からよく使っている方はこれらの積み重ねにより作業全体の生産性がアップすると思います!ぜひこれらの技を使いこなして日々の作業効率アップをしてください!
- カテゴリ:
- 【OBトコ】OBを便利に使おう
- キーワード:
- Oracle