sql2csv マニュアル (最終更新 2010/8/19)
※このマニュアルは、当該処理をパラメータ無しで実行したときに表示されるものと
  同じです。

※不具合(バグ)があります。
    「declare」から始まる PL/SQL は処理できません。(「begin」で変数を定義しない
  簡単な PL/SQL しか実行できません。初期のころは間違いなく実行できたのですが、
  いつの間にか PL/SQL 開始の判定部分が「begin」だけになっていました)


【名前】
    sql2csv - SQL 実行/SELECT 結果 CSV 形式出力処理  Ver.1.11.1B

【形式】
    sql2csv [オプション] ユーザ/パスワード [置換変数値...]

【機能説明】
1.SQL 実行機能

  ・PL/SQL を含むすべての SQL 文が実行できます。
  ・当該処理終了のとき、自動的にロールバックします。
      コミットしたい場合、オプション -commit を指定するか、明示的に SQL 文
    "COMMIT;" を実行する必要があります。
  ・SQL 文の実行でエラーが発生した場合、エラーメッセージを表示して自動的に
    ロールバックします。

2.SELECT 結果 CSV 表示機能

    SELECT 文の実行結果は、すべて CSV 形式で表示します。
    完全な CSV 規約に準じ、記号「,」「"」、改行コードをエスケープします。

    目的の値だけを簡単に表示でき、各種フィルタと組み合わせた処理を容易に実現
  できます。

    example% echo "SELECT C1, C2 FROM T1;" | sql2csv | checker

3.対話モード

    オプション prompt を指定し、対話モードを利用できます。

  ・矢印キーの上下で、以前に入力した文字列を呼び出すことができます。
  ・矢印キーの左右で、カーソルを移動できます。
  ・行の先頭に ! 記号を入力し、続けて文字を入力した場合、以前に入力した
    文字列を検索し再実行することができます。

  【注意事項】
    ・オプション prompt を指定しないと、入力した文字は目視できません。
      誤って起動した場合、q/quit/exit の何れかで一度終了するか、
      set prompt {プロンプト文字列} で対話モードに切り替えて下さい。

4.拡張コマンド

    各種の拡張コマンドを実行することができます。

    set     trim {1|true}              オプション相当
    set     trim 2                     オプション相当
    set     trim false                 オプション相当
        get trim                       現在のトリム指定を表示
    set/get show name                  オプション相当
    set/get show type                  オプション相当
    set/get show size                  オプション相当
    set/get show null                  オプション相当
    set/get show infos                 オプション相当
    set/get show sharp                 オプション相当
    set/get show data                  オプション相当
    set/get show all                   show オプションすべてが対象
    set     hide name                  オプション相当
    set     hide type                  オプション相当
    set     hide size                  オプション相当
    set     hide null                  オプション相当
    set     hide infos                 オプション相当
    set     hide sharp                 オプション相当
    set     hide data                  オプション相当
    set     hide all                   show オプションすべてが対象
    set     column_separator 文字列    オプション相当
        get column_separator           オプション相当
    set     line_separator 文字列      オプション相当
        get line_separator             オプション相当
    set     null 文字列                オプション相当
        get null                       オプション相当
    set     prompt 文字列              オプション相当
        get prompt                     オプション相当
    set     history SQL保存数          オプション相当
        get history                    オプション相当
    set     limit_length 最大長さ      オプション相当
        get limit_length               オプション相当
    set     lengthwise {true|false}    オプション相当
        get lengthwise                 オプション相当
    set     transaction commit         オプション相当
    set     transaction rollback       終了時にロールバック
        get transaction                現在のトランザクション指定を表示
    l                                  最後に実行した SQL を表示
    ll                                 過去に実行した SQL リストを表示
    /                                  最後に実行した SQL を再実行。
                                       または、入力した PL/SQL を実行
    /保存SQL番号                       過去に実行した SQL を実行
    exec コマンド                      外部コマンドを実行
    echo メッセージ                    メッセージを表示
    edit                               最後に実行した SQL を編集
    edit 保存SQL番号                   過去に実行した SQL を編集
    q/quit/exit                        処理を終了
    desc テーブル名                    テーブル情報を表示
    help                               ヘルプを表示
    spool ファイル名                   SELECT の実行結果などを指定した
                                       ファイルに保存。詳細はスプール
                                       機能を参照
    set     define {c|on|off}          オプション相当
        get define                     現在の置換変数識別文字を表示
        get defines                    現在の置換変数群を表示。
                                       名前の無い置換変数情報は、次の置換え
                                       用の値

    *拡張コマンドの英大小文字は区別しません。

5.コメント認識機能

    SQL にコメント付けることができます。
    コメントは先頭から "/*"、および末尾の "*/" で認識します。

6.日本語エラーメッセージ表示機能

    エラーが発生したとき、日本語のエラーメッセージを表示できます。
    一部の例外を除き、エラーメッセージ、原因、処置を表示します。

7.スプール機能

    SQL の実行によって得られた結果を、指定されたファイルに追加書き込みする
  ことができます。
    主目的を CSV 形式データの取得とし、エラーメッセージやレコードの区切り
  文字などは出力しません。

  ・SQL 実行結果、および同時に出力されるオプション show の表示結果
  ・オプション echo の実行結果

    追加モードでファイルをオープンするタイミングは、オプション spool に
  ファイル名が指定されたときです。
    このとき、以前にオープンされたファイルがあればクローズします。

    なお、スプールファイルのオープン後、内容をクリアしたいときは、ファイル
  自体の削除ではなく、null デバイスのコピーを行って下さい。

    % cp /dev/null {スプールファイル}

8.置換変数機能

    置換変数機能は、ユーザー変数名の前に 1 つ、または 2 つのアンパサンド(&)を
  付けたもので、起動時のパラメータとして指定した値、または検出したタイミングで
  入力した値に置き換える機能です。
    アンパサンドが 1 つのときは、検出した数分だけの値を必要とし、2 つのときは、
  変数名の数だけ値を必要とします。

    起動時のパラメータによる値指定が、必要な置換変数の数に満たない場合、置換
  変数名のプロンプトを表示してキー入力待ちの状態になります。

    なお、変数名に番号を指定することは可能ですが、パラメータの位置として
  利用することはできません。

    例: echo "select &2 from &1;" | sql2csv user/password &2の値 &1の値

    また、標準入力をリダイレクションやパイプとするとき、すべての置き換え値を
  起動パラメータとして指定する必要があります。
    上記の例では「&2の値」、および「&1の値」を省略することはできません。

【オプション】
    -trim {1|true}              値前後から半角空白を取り除く
    -trim 2                     半角空白に加え、全角空白も取り除く
   [-trim false]                トリム機能を使用しない(デフォルト)
    -{show | [hide]} name       カラム名を表示する/しない
    -{show | [hide]} type       カラムの型を表示する/しない
    -{show | [hide]} size       カラムサイズを表示する/しない
    -{show | [hide]} null       null 可/不可を表示する/しない
    -{show | [hide]} infos      name/type/size/null を指定する/しない
    -{show | [hide]} sharp      name/type/size/null を表示するとき、
                                先頭に "#" 記号を付ける/付けない
                                (コメント行の目印として利用できます)
    -{[show] | hide} data       データを表示する/しない
                                (カラム名のみ表示する場合などに利用できます)
    -column_separator 文字列    カラムの区切り文字を指定
                                (デフォルト: ",")
    -line_separator 文字列      レコードの区切り文字を指定
                                (デフォルト: ""(非表示))
    -null 文字列                null のとき表示する文字を指定
                                (デフォルト: ""(非表示))
    -prompt 文字列              対話形式向けのプロンプトを指定。
                                (デフォルト: ""(非表示))
                                当該オプションを指定したとき、検索、更新、
                                追加、削除数を表示する。また、レコード区切
                                り文字に # 記号 80 文字を設定
                                (-line_separator オプションを優先します)
    -commit                     当該処理終了のときコミットを実行
    -history SQL保存数          記憶する SQL 数を指定
                                (1 から 999)(デフォルト: 128)
    -limit_length 最大長さ      1 カラムの最大表示長を指定
                                (1 から 2147483646)(デフォルト: 65533)
    -lengthwise                 SELECT 文の結果を 1 行 1 カラムで表示。
                                  フォーマットはレコード番号、カラム番号、
                                物理カラム名、値の順です。
                                (-show/hide オプションを優先します)
                                  データが 1 件もないとき、または -hide data
                                を指定したとき、レコード番号 0 で全カラムを
                                1 度だけ表示。
                                  レコード区切り文字に # 記号を設定。
                                  非表示にしたいときは、line_separator
                                オプションに "" を指定して下さい。
                                  当該オプションが指定されたとき、show/hide
                                の sharp オプションは意味を持ちません
                                (-line_separator オプションを優先します)

    -define {c|on|off}          on/off で置換変数機能の有効/無効。
                                  1 文字を指定したとき、置換変数の識別文字を
                                指定したことになります。
                                (c デフォルト: & 記号)
                                詳細は置換変数機能を参照

 ・各種オプションに指定する文字列は、最大で 256 バイトまでです。
    (超過は切り捨て)
  ・各種オプションと、ユーザ名/パスワードの並び順に規定はありません。

【使用例】
    例 1: SQL の実行結果を CSV 形式で取得します。

          example% echo "SELECT * FROM TABLE1;" | sql2csv user/password

    例 2: 2 つの SQL を含むファイルを入力し、実行結果を CSV 形式で取得します。

            a.sql ファイルのサンプル

              SELECT COLUMN1, COLUMN2 FROM TABLE3 WHERE COLUMN4 = '5';
              SELECT COLUMNa, COLUMNb, COLUMNc FROM TABLEd;

          example% cat a.sql | sql2csv user/password

    例 3: 対話形式で SQL を指定し、実行結果を CSV 形式で取得します。

          example% sql2csv -prompt "SQL>" user/password
                 SQL>SQLs...
                 SQL>exit  (または、q/quit)

    例 4: SQL の実行結果を CSV 形式で取得します。
          また、このときカラム名を表示し、null カラムに * 記号を表示します。

          example% echo "SELECT * FROM TABLE1;" | \
                     sql2csv -show name user/password -null "*"

    例 5: SQL の実行結果を CSV 形式 1 行 1 カラムで取得します。
          また、このときすべての show オプションも表示し、レコードの区切り
          文字を非表示にします。

          example% echo "SELECT * FROM TABLE1;" | \
                     sql2csv -show infos -lengthwise -line_separator "" \
                              user/password

【終了ステータス】
    0     正常
    >0    異常

【制限事項】
1.数値項目(NUMBER 型)

    数値項目(NUMBER 型)を扱うとき、int 型(4 バイト)ホスト変数にフェッチします。
  もし、数値項目が 9 桁を超えるのであれば、予め文字型へ変換する必要があります。
  (正確には 10 桁 2147483647 以下であれば可能)

        例: CREATE TABLE TEST (N NUMBER(10));
            INSERT INTO TEST VALUES ('9876543210');
            SELECT TO_CHAR(N) FROM TEST;

【注意事項】
1.用途について

    試験不足のためバグが残っている可能性があります。
    重要な作業では使用しないで下さい。
    情報収集程度であれば問題ないと思われますが、重要なデータの更新作業は
  sqlplus を使用して下さい。

2.半角カナについて

    半角カナは実際の文字コードに関わらず 1 バイトと内部認識します。
    例えば char(10)に EUC コードの半角カナが 1 文字入っている場合、-trim
  オプションを使用しないと後方に半角スペースが 9 つ出力されます。
    CSV 形式として sqlldr に引き渡すとエラーになります。

    将来的にはオプションを追加し、EUC コードとして 10 バイトになるロジックを
  追加したいと思います。

3.Oracle のバージョンと使用実績について

    Oracle 8i での使用実績は十分あると思います。
    Oracle 11g での使用実績はこれから増えていきますが、まだ Oracle 8i ほど
  ではありません。
    Oracle 9i、および Oracle 10g での実績は、当方で行う当該ツールのテスト
  範囲に限定されます。

【sql2csv 使用許諾】

  Copyright (C) 2003-2010 K.H

1.本ソフトウェアはフリー・ソフトウェアです。個人使用、業務使用に関わらず
  自由に使用できます。また、再配布についても自由です。

2.本ソフトウェアは無保証です。自己責任で使用してください。

3.不具合のご連絡、改善要望などは、下記の URL を参照して下さい。

    http://www7b.biglobe.ne.jp/~dump_struct/
・ページ先頭へ
・新しいウィンドウ/タブでトップページを開く