データベースの参照結果をCSVに出力(select[type="csv"])
SQLのSELECT句を組立て実行し、取得したデータをCSV形式で出力します。
SQL部分はselectタグと同様ですので詳しくはそちらをご確認ください。
- 使用可能箇所
- run
- Sub Tags
- link,
join,
where,
group,
order,
value,
formula
属性
- id
- 返却値を管理するID
- type
- csvを指定
- entity
- テーブル名/ビュー名、またはビュー・クラス名
- transaction
- トランザクション設定ファイルのXMLファイル名(例:default)
- database
- トランザクション設定ファイル内の接続設定のコード
- schema
- 標準スキーマ
- when
-
多くのTagsでサポートしている「実行可否判定のための属性」です。
(こちらを参照)
(記述例)
「SYS_USER」のデータをCSV出力(ユーザーID, ユーザー名, 所属ID, 所属名)
カラムの出力順やヘッダーをvalueタグにて指定します。
selectタグの使い方はこちらを参照
<run>
<select id="CSV出力" entity="SYS_USER" type="csv">
<value map="USER_CODE" key="ユーザーID" />
<value map="USER_NAME" key="ユーザー名" />
<value map="GROUP_CODE" key="所属ID" base="SYS_USER_GROUP" />
<value map="GROUP_NAME" key="所属名" base="SYS_GROUP" />
<join entity="SYS_USER_GROUP" key="USER_CODE" />
<join entity="SYS_GROUP" key="GROUP_CODE"
base="SYS_USER_GROUP" />
</select>
</run>
JAVAの実装
オプション
CSV出力時に以下のオプションが指定できます。
オプションはルール実行時にパラメータ・コンテナに所定の項目名で設定します。
- OutputStream
(必須)
- CSVを出力する先のOutputStream
- OutputHeader
-
ヘッダーの出力有無を切替え(省略時はヘッダー出力あり)
※ver 1.0.9以降
- Character
- CSVファイルの文字コード(省略時はWindows-31J)
- Delimiter
- CSVの区切り文字(省略時はカンマ)
※パラメータ・コンテナの項目名は「selectタグのid + ".オプション名"」の形式で設定
(実装例) ルールの実行結果を指定したファイルに出力する
「SYS_USER」のデータをCSV出力(ユーザーID, ユーザー名, 所属ID, 所属名)
カラムの出力順やヘッダーをvalueタグにて指定します。
selectタグの使い方はこちらを参照
// ルールエンジン:CSV出力
final RuleEngineIF rule = super.getRuleEngine("CSV出力");
// パラメータ・コンテナ
final Map parm = rule.getParameter();
parm.put("CSV出力.OutputStream", new FileOutputStream("c:\\sample\\sample.csv"));
parm.put("CSV出力.OutputHeader", true);
parm.put("CSV出力.Character", "UTF-8");
parm.put("CSV出力.Delimiter", "\t");
rule.run();
(実装例) ルールの実行結果をクライアントにダウンロードする(WEBパッケージ利用)
// ルールエンジン:CSV出力
final RuleEngineIF rule = super.getRuleEngine("CSV出力");
// パラメータ・コンテナ
final Map parm = rule.getParameter();
// クライアントへのダウンロードAPI
final FileOutput out = super.getUserIO().getResponseOutput();
out.setContentType("text/csv"); // ファイル種別
out.setFileName("sample.csv"); // ファイル名
out.setAttachment(true); // モーダルウィンドウを開く
parm.put("CSV出力.OutputStream", out.getOutputStream());
parm.put("CSV出力.OutputHeader", true);
parm.put("CSV出力.Character", "UTF-8");
parm.put("CSV出力.Delimiter", "\t");
rule.run();