eexdbsqlSQLの実行

機能

標準入力やファイルから,SQLまたはeexdbsqlのサブコマンドを入力し,その実行結果を標準出力またはファイルに出力します。このコマンドを利用すると,会話形式でSQLを実行できます。

なお,このコマンドを終了する場合は,eexdbsqlのサブコマンドの#EXITを実行してください。

注意
eexdbsqlコマンドでは,操作系SQLだけが実行できます。定義系SQLは実行できません。

コマンドの形式

eexdbsql -g サービスグループ名
      〔-V〕
      〔-o 出力ファイル名〕
      〔-r コマンド処理打ち切り時間〕

オプションの説明

●-g サービスグループ名

  ~〈識別子〉((1~31文字))
対象となるTP1/EEプロセスのサービスグループ名を指定します。

●-V

  
このオプションを指定すると,SQLまたはサブコマンドの実行結果のほかに,実行したSQLまたはサブコマンドの内容も出力されます。
このオプションを指定した場合と指定しない場合の違いを次に示します。
・ファイルに記述したSQLまたはサブコマンドをリダイレクトでファイルから入力して実行する場合
  • eexdbsql -g srvl < infile
    この場合,標準出力には,SQLまたはサブコマンドの実行結果だけが出力されます。
  • eexdbsql -g srvl -V < infile
    この場合,標準出力には,SQLまたはサブコマンドの実行結果のほかに,実行したSQLまたはサブコマンドの内容が出力されます。
・SQLまたはサブコマンドの実行結果をリダイレクトでファイルに出力する場合
  • eexdbsql -g srvl > outfile
    この場合,ファイルには,SQLまたはサブコマンドの実行結果だけが出力されます。
  • eexdbsql -g srvl -V > outfile
    この場合,ファイルには,SQLまたはサブコマンドの実行結果のほかに,実行したSQLまたはサブコマンドの内容が出力されます。
このオプションの指定例については,「SQLおよびサブコマンドの入力方法」および「SQLおよびサブコマンドの実行結果の出力方法」を参照してください。

●-o 出力ファイル名

  ~〈パス名〉((1~510文字))
SQLの実行結果をファイルに出力する場合にこのオプションを指定します。出力先のファイル名を絶対パス名で指定してください。
このオプションを指定すると,SQLの実行結果と,実行したSQLの内容が出力されます。
なお,eexdbsqlコマンドは,ここで指定した出力ファイルが存在するかどうかをチェックしません。
このオプションを指定するときの規則を次に示します。
  • パス名として指定できる文字は,英数字,スラッシュ(/),ピリオド(.),下線(_),#,@,~,コロン(:),および半角空白です。パス名にこれら以外の文字列が含まれている場合は,そのパス名をこのオプションに指定できません。
  • 半角空白を含むパス名を指定する場合は,アポストロフィ(')で囲んで指定してください。
  • パス名に全角文字が含まれている場合,そのパス名をこのオプションに指定できません。
このオプションの指定例については,「SQLおよびサブコマンドの実行結果の出力方法」を参照してください。
eexdbsqlコマンドが異常終了した場合,ここで指定した出力ファイルは自動的に削除されません。
・-Vオプションと-oオプションの違い
-Vオプションと-oオプションの違いを次の表に示します。

表10-6 -Vオプションと-oオプションの違い

項番-Vオプションの場合-oオプションの場合
1
  • SQLの実行結果と,実行したSQLの内容が出力されます。
  • サブコマンドの実行結果と,実行したサブコマンドの内容が出力されます。
  • SQLの実行結果と,実行したSQLの内容が出力されます。
  • サブコマンドの実行結果は出力できません。
2出力できる実行結果の上限が60キロバイトになります。出力できる実行結果の上限はありません。
なお,-oオプションと-Vオプションを同時に指定した場合,-oオプションの出力結果は-Vオプションの影響を受けません。

●-r コマンド処理打ち切り時間

  ~〈符号なし整数〉((1~6000))《60》(単位:分)
コマンド処理の打ち切り時間を分単位で指定します。
デフォルトの60分(1時間)でコマンドの処理が終わらない場合は,打ち切り時間の指定を長くしてください。コマンドの処理に1時間も掛からない場合は,打ち切り時間の指定を短くしてください。
コマンドが実行されている間,TP1/EEのサービスが実行できないことがあります。そのため,コマンド処理の打ち切り時間を適切に設定する必要があります。

実行できるSQLおよびサブコマンド

実行できるSQLおよびサブコマンドについて説明します。

■実行できるSQL

指定できるSQLを次の表に示します。

表10-7 指定できるSQL

項番SQL種別SQL内容
1操作系SQLDELETE文行を削除します。
2INSERT文行を挿入します。
3SELECT文行を検索します。
4UPDATE文行を更新します。

なお,SQLを実行すると,1SQLごとに自動的にコミットされます。

■実行できるeexdbsqlサブコマンド

SQL以外にも,次の表に示すeexdbsqlのサブコマンドを実行できます。

表10-8 eexdbsqlのサブコマンド一覧

項番コマンド機能概要参照先
1#COMMENT行を注釈にします。eexdbsqlのサブコマンドの詳細
2#EXITeexdbsqlコマンドを終了します。
3#SET DUMPMODE検索結果を16進形式で表示します。
4#SET OPT REPORTインデクス情報,作業表情報を表示します。

SQLおよびサブコマンドの入力方法

SQLおよびサブコマンドは,標準入力から入力する方法と,ファイルから入力する方法があります。

■標準入力からの入力する場合

eexdbsqlコマンドを実行すると,コマンド入力待ちの状態になるため,SQLおよびサブコマンドを入力します。コマンド入力待ちの状態になると,プロンプトが表示されます。プロンプトは入力する状況によって表示形式が変わります。プロンプトの表示形式を次の表に示します。

表10-9 プロンプトの表示形式

項番プロンプトの表示形式説明
1COMMAND ?通常の入力待ちであることを示します。
2NEXT ?継続行の入力待ちであることを示します。

それぞれのSQLおよびサブコマンド,およびデータの最後にはセミコロン(;)を指定してください。eexdbsqlコマンドを終了するには,#EXITコマンドを入力してください。

■ファイルから入力する場合

実行するSQLおよびサブコマンドをあらかじめファイルに記述して,リダイレクションを利用して入力します。

改行コードには,X'0A'を使用してください。SQLおよびサブコマンド中に,X'00'~X'1F'のコードを指定した場合は,eexdbsqlコマンドがそのコードを空白に置き換えます。

ファイル中に#EXITを記述していない場合,または#EXITの記述の前にEOF制御文字を含む場合は,eexdbsqlコマンドが終了処理を行います。

実行例を次に示します。

(例)

eexdbsql -g srvl -V < infile

<infileの記述内容>

SELECT "C1","C2"
FROM "T1";
#EXIT;

SQLおよびサブコマンドの終了指定

1行の最後にセミコロン(;)がある場合,セミコロンの前までがSQLおよびサブコマンドと見なされます。セミコロン以降は,コメントとして扱われます。セミコロンがない場合は,次の行に継続しているものとして扱われます。行を連結する場合,改行記号を削除して連結されます。

実行例を次に示します。

(例)

SELECT "C1",                     (継続)
"C2"                             (継続)
FROM "T1";                       (SQL文の終了)

eexdbsqlのサブコマンドの詳細

eexdbsqlのサブコマンドの詳細について説明します。

#COMMENT(注釈)

機能
行を注釈行にします。
形式

#COMMENT 注釈

#EXIT(eexdbsqlコマンドの終了)

機能
eexdbsqlコマンドを終了します。
形式

#EXIT

#SET DUMPMODE(検索結果の16進形式での表示)

機能
検索結果を16進形式と文字形式で表示します。
16進形式とは,0~9,およびA~Fで表す文字列の形式のことです。16進文字2文字で1バイトのデータを表現します。
形式

#SET DUMPMODE {ON|OFF}

ON
検索結果を16進形式で表示します。
OFF
検索結果を文字形式で表示します。
eexdbsqlコマンド開始時はOFFが仮定されます。

#SET OPT REPORT(インデクス情報,作業表情報の表示)

機能
インデクス情報,および作業表情報を表示します。
形式

#SET OPT REPORT {ON|OFF}

ON
インデクス情報,および作業表情報を表示します。
ただし,作業表を生成しないSQLの場合,作業表情報は表示されません。
OFF
インデクス情報,および作業表情報を表示しません。
eexdbsqlコマンド開始時はOFFが仮定されます。
使用例
SELECT文の情報を表示する場合の使用例を次に示します。
(例)

#SET OPT REPORT ON;
SELECT * FROM "T1" WHERE C1=100 ORDER BY C2;
KFSB96104-I The index "IX#T1C1" of table "XDBUSER"."T1" will be used.
KFSB96105-I Executing this SQL will create 1 work tables.

SQLおよびサブコマンドの実行結果の出力方法

SQLおよびサブコマンドの実行結果の出力方法を説明します。

■標準出力に出力する場合

SQLおよびサブコマンドの結果は,eexdbsqlコマンドを実行した標準出力に表示されます。

標準出力には,SQLの実行結果を最大で60キロバイトまでしか出力できません。それ以上の実行結果が必要な場合は,-oオプションを使用して出力ファイルを指定してください。

■ファイルに出力する場合

リダイレクトや-oオプションの指定などによって,標準出力の出力先をファイルに変更できます。

実行例を次に示します。

(例)

eexdbsql -g srvl -V | tee outlog

-oオプションの実行例を次に示します。

(例)

eexdbsql -g srvl -o outlog

実行結果の出力形式

SQLの実行結果の出力形式を次に示します。

■SELECT文の場合

SELECT文を実行したときの,実行結果の例を次に示します。

SELECT 'C1 = ',"C1" FROM "T1";
(1)  EXP C1
  ----- ---------------
(2) C1 = -123456789.1234
(3) C1 = ***************
(4) KFSB96103-I            2 rows were selected.

説明
  1. 問合せ式の結果,導出される表の列名
    名前がない列の場合は,△△EXP(△は空白1文字)が表示されます。
  2. 検索結果
    検索結果を表示する文字形式を次の表に示します。

    表10-10 各データ型の文字形式

    項番データ型内容
    1数データ各データ型の定数形式(符号,およびピリオドを含みます)
    2文字データ各データ型の定数形式からアポストロフィ(')を除いたもの(ただし,表示できない文字はコロン(:)で表示します)
    3日時データ定数形式のアポストロフィ(')で囲まれた部分
    4行IDデータ16進形式
    注※
    文字形式に変換できない場合は,データを文字形式で表現した場合の,最大長の数分の疑問符(?)が表示されます。
    選択式にROWを指定した場合は,16進形式で表示されます。

  3. ナル値の表示方法
    データを文字形式で表現した場合の,最大長の数分アスタリスク(*)が表示されます。
  4. 検索結果行数

■SELECT文以外の操作系SQLの場合

SELECT文以外の操作系SQLを実行すると,DELETE文,INSERT文,およびUPDATE文によって次のように操作行数が表示されます。ただし,操作行数がオーバフローした場合は,アスタリスク(*)が三つ表示されます。

実行結果の例を次に示します。

■SELECT文以外の操作系SQLを実行したときの例

COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

DELETE FROM "T1" WHERE "C1"=0;
KFSB96103-I            1 rows were deleted.
COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

INSERT INTO "T1"("C1","C2") VALUES(+1520.34,'abc');
KFSB96103-I            1 rows were inserted.
COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

UPDATE "T1" SET "C1"=0 WHERE "C1"<0;
KFSB96103-I            2 rows were updated.

文字コードに関する注意事項

文字コードに関する注意事項を次に示します。

リターンコード

eexdbsqlコマンドのリターンコードを次に示します。

0:正常終了

4:異常終了