クラス Process_BulkQuery
java.lang.Object
org.opengion.fukurou.process.AbstractProcess
org.opengion.fukurou.process.Process_BulkQuery
- すべての実装されたインタフェース:
ChainProcess
,FirstProcess
,HybsProcess
Process_BulkQueryは、データベースから読み取った内容を、一括処理する、
FirstProcess と、ChainProcess のインターフェースを両方持った、実装クラスです。
ParamProcess のサブクラス(Process_DBParam)にセットしたり、加工したりします。
このクラスは、上流から、下流への処理は、1度しか実行されません。
FirstProcess の検索結果は、Set オブジェクトとして、Process_DBParam に渡します。
ChainProcess は、その結果を取り出し、自分自身の処理結果と合せて加工します。
FirstProcess では、-action は、query のみです。
query は、指定のSQL文を実行し、結果のSetをParamProcessに設定します。
ChainProcess では、-action は、query、bulkSet、minus、intersect が指定できます。
query は、上記と同じです。
minus は、先のSetから、SQL文の実行結果を引き算し、結果Setを再設定します。
intersect は、先のSetから、SQL文の実行結果と重複する結果Setを再設定します。
bulkSet は、先のSetを取り出し、SQL文に加味して処理します。
流れ的には、query で検索し、minusまたはintersect でSetオブジェクトを加工し、bulkSet で
利用します。例えば、ORACLEから、ユニークキーのSetを作成し、SQLServerのユニークキーを
minusした結果を、ORACLEからDELETEすれば、不要なデータを削除するなどの処理が実行可能になります。
また、単純に、query だけを、チェインすれば、単発のUPDATE文を実行することが可能です。
データベース接続先等は、ParamProcess のサブクラス(Process_DBParam)に
設定された接続(Connection)を使用します。
DBID は、Process_DBParam の -configFile で指定する DBConfig.xml ファイルを使用します。
引数文字列中にスペースを含む場合は、ダブルコーテーション("") で括って下さい。
引数文字列の 『=』 の前後には、スペースは挟めません。必ず、-key=value の様に
繋げてください。
SQL文には、{@DATE.YMDH}等のシステム変数が使用できます。
- 変更履歴:
- 5.3.4.0 (2011/04/01) 新規追加
- 形式サンプル:
- Process_BulkQuery -action=query -dbid=DBGE -sql="select KEY from TABLE_X" -action=処理方法(必須) : 実行する処理方法を指定します -action=query 単なるSQL文を実行します。 -action=bulkSet 実行したSQL文の結果を、Set<String> オブジェクトに設定します。 -action=minus Set<String> オブジェクトと、ここでの実行結果の差分をとります。 -action=plus Set<String> オブジェクトと、ここでの実行結果の加算をします。 -action=intersect Set<String> オブジェクトと、ここでの実行結果の積分をとります。 [ -dbid=DB接続ID ] : -dbid=DBGE (例: Process_DBParam の -configFile で指定する DBConfig.xml ファイルで規定) [ -sql=検索SQL文 ] : -sql="select * from GEA08" [ -sqlFile=検索SQLファイル ] : -sqlFile=select.sql -sql= を指定しない場合は、ファイルで必ず指定してください。 [ -sql_XXXX=固定値 ] : -sql_SYSTEM_ID=GE SQL文中の{@XXXX}文字列を指定の固定値で置き換えます。 WHERE SYSTEM_ID='{@SYSTEM_ID}' ⇒ WHERE SYSTEM_ID='GE' [ -bulkKey=XXXX ] : -bulkKey=XXXX SQL文中の{@XXXX}文字列をProcess_BulkQuery等で取得した値で置き換えます。 WHERE SYSTEM_ID IN ( {@XXXX} ) ⇒ WHERE SYSTEM_ID IN ( 'AA','BB','CC' ) [ -bulkType=NUM|STR ] : -bulkType=STR Bulkの値を文字列に変換する場合に、数字型か、文字型を指定します。 数字型では、AA,BB,CC とし、文字型では、'AA','BB','CC' に変換します(初期値:STR)。 [ -fetchSize=1000 ] :フェッチする行数(初期値:1000) [ -display=[false/true] ] :結果を標準出力に表示する(true)かしない(false)か(初期値:false[表示しない]) [ -debug=[false/true] ] :デバッグ情報を標準出力に表示する(true)かしない(false)か(初期値:false[表示しない])
- 導入されたバージョン:
- JDK5.0,
-
フィールドの概要
クラスから継承されたフィールド org.opengion.fukurou.process.AbstractProcess
BUFFER_LARGE, BUFFER_MIDDLE, CHAIN_FILE_USAGE, CR, DB_BATCH_SIZE, DB_PARAM_USAGE, PROCESS_PARAM_USAGE, TAB
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明引数の LineModel を処理するメソッドです。void
end
(boolean isOK) プロセスの終了を行います。void
init
(ParamProcess paramProcess) プロセスの初期化を行います。static void
このクラスは、main メソッドから実行できません。makeLineModel
(int rowNo) 最初に、行データである LineModel を作成します FirstProcess は、次々と処理をチェインしていく最初の行データを 作成して、後続の ChainProcess クラスに処理データを渡します。boolean
next()
このデータの処理において、次の処理が出来るかどうかを問い合わせます。report()
プロセスの処理結果のレポート表現を返します。usage()
このクラスの使用方法を返します。クラスから継承されたメソッド org.opengion.fukurou.process.AbstractProcess
getArgument, logging, println, putArgument, putArgument, setLoggerProcess, throwException, throwException, toString
クラスから継承されたメソッド java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
インタフェースから継承されたメソッド org.opengion.fukurou.process.HybsProcess
logging, println, putArgument, putArgument, setLoggerProcess
-
コンストラクタの詳細
-
Process_BulkQuery
public Process_BulkQuery()デフォルトコンストラクター。 このクラスは、動的作成されます。デフォルトコンストラクターで、 super クラスに対して、必要な初期化を行っておきます。
-
-
メソッドの詳細
-
init
プロセスの初期化を行います。初めに一度だけ、呼び出されます。 初期処理(ファイルオープン、DBオープン等)に使用します。- 定義:
init
インタフェース内HybsProcess
- パラメータ:
paramProcess
- データベースの接続先情報などを持っているオブジェクト- 変更履歴:
- 5.3.9.0 (2011/09/01) 1000件を超えた場合の処理を追加, 6.3.1.1 (2015/07/10) plus アクションの追加, 8.5.4.2 (2024/01/12) PMD 7.0.0 SingularField 対応
-
end
プロセスの終了を行います。最後に一度だけ、呼び出されます。 終了処理(ファイルクローズ、DBクローズ等)に使用します。- 定義:
end
インタフェース内HybsProcess
- パラメータ:
isOK
- トータルで、OKだったかどうか [true:成功/false:失敗]
-
next
このデータの処理において、次の処理が出来るかどうかを問い合わせます。 この呼び出し1回毎に、次のデータを取得する準備を行います。- 定義:
next
インタフェース内FirstProcess
- 戻り値:
- 処理できる:true / 処理できない:false
-
action
引数の LineModel を処理するメソッドです。 変換処理後の LineModel を返します。 後続処理を行わない場合(データのフィルタリングを行う場合)は、 null データを返します。つまり、null データは、後続処理を行わない フラグの代わりにも使用しています。 なお、変換処理後の LineModel と、オリジナルの LineModel が、 同一か、コピー(クローン)かは、各処理メソッド内で決めています。 ドキュメントに明記されていない場合は、副作用が問題になる場合は、 各処理ごとに自分でコピー(クローン)して下さい。- 定義:
action
インタフェース内ChainProcess
- パラメータ:
data
- オリジナルのLineModel- 戻り値:
- 処理変換後のLineModel
-
makeLineModel
最初に、行データである LineModel を作成します FirstProcess は、次々と処理をチェインしていく最初の行データを 作成して、後続の ChainProcess クラスに処理データを渡します。- 定義:
makeLineModel
インタフェース内FirstProcess
- パラメータ:
rowNo
- 処理中の行番号- 戻り値:
- 処理変換後のLineModel
-
report
プロセスの処理結果のレポート表現を返します。 処理プログラム名、入力件数、出力件数などの情報です。 この文字列をそのまま、標準出力に出すことで、結果レポートと出来るような 形式で出してください。- 定義:
report
インタフェース内HybsProcess
- 戻り値:
- 処理結果のレポート
-
usage
このクラスの使用方法を返します。- 定義:
usage
インタフェース内HybsProcess
- 戻り値:
- このクラスの使用方法
- このメソッドは、nullを返しません
-
main
このクラスは、main メソッドから実行できません。- パラメータ:
args
- コマンド引数配列
-