public class DirectTableInsertTag extends ReadTableTag
指定のファイルを直接データベースに登録するデータ入力タグです。
通常の readTable などは、DBTableModelオブジェクトを介して全件メモリに
ロードしてから表示させる為、大量データ処理ができません。
このタグでは、直接ファイルを読み取りながらデータベース登録するので
大量データをバッチ的に登録する場合に使用します。
読み取るファイルは、先頭(または実データが現れるまでに) #NAME 行が必要です。
これは、ファイルデータのカラム名を指定しています。また、columns 属性を使用すれば、
ファイルの#NAME 行より優先して(つまり存在していなくても良い)データのカラム名を
指定することが出来ます。
この#NAME 行は、ファイルのセパレータと無関係に必ずタブ区切りで用意されています。
タグのBODY部に、実行するSQL文を記述します。
このSQL文は、
INSERT INTO GE41 (CLM,NAME_JA,SYSTEM_ID,FGJ,DYSET)
VALUES ([CLM],[NAME_JA],[SYSTEM_ID],'1','{@USER.YMDH}')
と、いう感じで、ファイルから読み込んだ値は、[カラム名]に割り当てられます。
もちろん、通常の固定値(FGJに'1'をセット)や、リクエスト変数(DYSETの{@USER.YMDH})
なども使用できます。
※ 6.2.3.0 (2015/05/01)
BODY部にSQL文を記述しない場合は、table 属性に、INSERTするテーブルIDを指定します。
※ 6.2.4.0 (2015/05/15)
omitNames に、WRITABLE と ROWID を、強制的に含めます(無条件)。
※ このタグは、Transaction タグの対象です。 ●形式:<og:directTableInsert filename="[・・・]" ・・・ >INSERT INTO ・・・ </og:directTableInsert >
●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します)
●Tag定義:
<og:directTableInsert
readerClass 【TAG】実際に読み出すクラス名の略称(TableReader_**** の ****)をセットします
(初期値:TABLE_READER_DEFAULT_CLASS[=AutoReader])
専 commitBatch 【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)
専 dbid 【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)
専 table 【TAG】BODYのSQL文を指定しない場合に使用するテーブルIDを指定します
command 【TAG】コマンド (NEW,RENEW)をセットします(初期値:NEW)
fileURL 【TAG】読取元ディレクトリ名を指定します(初期値:FILE_URL)
filename 【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls])
encode 【TAG】ファイルを作成するときのファイルエンコーディング名をセットします(初期値:FILE_ENCODE)
skipRowCount 【TAG】(通常は使いません)データの読み飛ばし件数を設定します
maxRowCount 【TAG】読取時の最大取り込み件数をセットします (初期値:0:[無制限])
errRowCount 【TAG】読取時の最大エラー件数をセットします (初期値:200)(0:[無制限])
separator 【TAG】可変長ファイルを作成するときの項目区切り文字をセットします
columns 【TAG】読取元ファイルのカラム列を、外部(タグ)よりCSV形式で指定します
omitNames 【TAG】読取対象外のカラム列を、外部(タグ)よりCSV形式で指定します
modifyType 【TAG】ファイル取り込み時の モディファイタイプ(A(追加),C(更新),D(削除))を指定します
displayMsg 【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:VIEW_DISPLAY_MSG[=]))
overflowMsg 【TAG】読取データが最大検索数をオーバーした場合に表示するメッセージリソースIDを指定します (初期値:MSG0007[検索結果が、制限行数を超えましたので、残りはカットされました])
notfoundMsg 【TAG】検索結果がゼロ件の場合に表示するメッセージリソースIDを指定します(初期値:MSG0077[対象データはありませんでした])
※ sheetName 【TAG】EXCELファイルを読み込むときのシート名を設定します(初期値:指定なし)
※ sheetNos 【TAG】EXCELファイルを読み込むときのシート番号を複数設定できます(初期値:0)
※ sheetConstKeys 【TAG】EXCELファイルを読み込むときの固定値となるカラム名(CSV形式)
※ sheetConstAdrs 【TAG】EXCELファイルを読み込むときの固定値となるアドレス(行-列,行-列,・・・)
nullBreakClm 【TAG】カラム列に NULL が現れた時点で読取を中止します(複数Sheetの場合は、次のSheetを読みます)。
nullSkipClm 【TAG】カラム列に NULL が現れたレコードは読み飛ばします。
useNumber 【TAG】行番号情報を、使用している/していない[true/false]を指定します(初期値:true)
useRenderer 【TAG】読取処理でKEY:VAL形式のコードリソースから、KEYを取り出す処理を行うかどうかを指定します(初期値:USE_TABLE_READER_RENDERER[=false])
adjustColumns 【TAG】読取元ファイルのデータ変換を行うカラム列をカンマ指定します
checkColumns 【TAG】読取元ファイルの整合性チェックを行うカラム列をカンマ指定します
nullCheck 【TAG】NULL チェックすべきカラム列をCSV形式(CVS形式)で指定します
matchKeys 【TAG】レコードの読取条件指定時のカラム列をCSV形式で指定します 6.4.6.0 (2016/05/27)
matchVals 【TAG】レコードの読取条件指定時のカラム列に対応する正規表現データをCSV形式で指定します 6.4.6.0 (2016/05/27)
language 【TAG】タグ内部で使用する言語コード[ja/en/zh/…]を指定します
stopZero 【TAG】読込件数が0件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])
mainTrans 【TAG】(通常は使いません)タグで処理される処理がメインとなるトランザクション処理かどうかを指定します(初期値:false)
tableId 【TAG】(通常は使いません)sessionから所得する DBTableModelオブジェクトの ID
scope 【TAG】キャッシュする場合のスコープ[request/page/session/application]を指定します(初期値:session)
useTimeView 【TAG】処理時間を表示する TimeView を表示するかどうかを指定します
(初期値:VIEW_USE_TIMEBAR[=true])。
caseKey 【TAG】このタグ自体を利用するかどうかの条件キーを指定します(初期値:null) 5.7.7.2 (2014/06/20)
caseVal 【TAG】このタグ自体を利用するかどうかの条件値を指定します(初期値:null) 5.7.7.2 (2014/06/20)
caseNN 【TAG】指定の値が、null/ゼロ文字列 でない場合(Not Null=NN)は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20)
caseNull 【TAG】指定の値が、null/ゼロ文字列 の場合は、このタグは使用されます(初期値:判定しない) 5.7.7.2 (2014/06/20)
caseIf 【TAG】指定の値が、true/TRUE文字列の場合は、このタグは使用されます(初期値:判定しない)
debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false)
> ... Body ...
</og:directTableInsert>
●使用例
<og:directTableInsert
dbid = "ORCL" 接続データベースID(初期値:DEFAULT)
separator = "," ファイルの区切り文字(初期値:タブ)
fileURL = "{@USER.ID}" 読み取り元ディレクトリ名
filename = "{@filename}" 読み取り元ファイル名
encode = "Shift_JIS" 読み取り元ファイルエンコード名
displayMsg = "MSG0040" 登録完了後のメッセージ
columns = "CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG"
#NAME の代わりに使用するカラム列名
commitBatch = "100" この件数ずつコミットを発行(初期値:無制限)
useColumnCheck = "true" カラムチェックを行うかどうか(初期値:false)
useColumnAdjust = "true" カラム変換を行うかどうか(初期値:false)
nullCheck = "CLM,SYSTEM_ID" NULLチェックを実行します。
>
INSERT INTO GE41
(CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG,
FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD)
VALUES
([CLM],[NAME_JA],[LABEL_NAME],[KBSAKU],[SYSTEM_ID],[LANG],
'1','{@USER.YMDH}','{@USER.YMDH}','{@USER.ID}','{@USER.ID}','{@GUI.KEY}')
</og:directTableInsert >ReadTableTag.ColumnActionclmAct, CMD_NEW, CMD_RENEW, columns, displayMsg, encode, executeCount, maxRowCount, nullBreakClm, nullSkipClm, readerClass, separator, sheetConstAdrs, sheetConstKeys, sheetName, sheetNos, skipRowCount, sqlError, stopZero, useNumberBR, BUFFER_MIDDLE, CRbodyContentid, pageContextEVAL_BODY_BUFFERED, EVAL_BODY_TAGEVAL_BODY_AGAINEVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE| コンストラクタと説明 |
|---|
DirectTableInsertTag()
デフォルトコンストラクター
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
protected int |
afterEnd()
#doEndTag() の後続処理を記述します。
|
protected void |
create(java.io.File file)
ファイルオブジェクト より読み込み、データベースに書き込みます。
|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setCommitBatch(java.lang.String cmtBat)
【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)。
|
void |
setDbid(java.lang.String id)
【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。
|
void |
setTable(java.lang.String tbl)
【TAG】BODYのSQL文を指定しない場合に使用するテーブルIDを指定します。
|
void |
setUseTimeView(java.lang.String flag)
【TAG】処理時間を表示する TimeView を表示するかどうか[true:する/false:しない]を指定します
(初期値:VIEW_USE_TIMEBAR[=true])。
|
java.lang.String |
toString()
このオブジェクトの文字列表現を返します。
|
addOmitNames, doEndTag, setAdjustColumns, setCheckColumns, setColumns, setCommand, setDisplayMsg, setEncode, setErrRowCount, setFilename, setFileURL, setMainTrans, setMatchKeys, setMatchVals, setMaxRowCount, setModifyType, setNotfoundMsg, setNullBreakClm, setNullCheck, setNullSkipClm, setOmitNames, setOverflowMsg, setReaderClass, setSeparator, setSheetConstAdrs, setSheetConstKeys, setSheetName, setSheetNos, setSkipRowCount, setStopZero, setTableId, setUseNumber, setUseRendereradd, add, addEventColumn, addEventColumn, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getCommonTagThrowable, getContextAttribute, getContextPath, getCookie, getCSVParameter, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsg, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestMethod, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getSumRequestValue, getTagName, getTransaction, getUser, getUserEditInfo, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, makeUrl, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, setCaseIf, setCaseKey, setCaseNN, setCaseNull, setCaseVal, setContextAttribute, setCookie, setDebug, setLanguage, setLbl, setNoTransitionRequest, setObject, setObject, setParameterNames, setParameterRows, setRequestAttribute, setRequestCacheData, setScope, setSessionAttribute, setUserInfo, startQueryTransaction, sys, sysBool, sysInt, useMainTrans, useQuotCheck, useTag, useXssCheckdoInitBody, getBodyContent, getPreviousOut, release, setBodyContentfindAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValueclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetParent, setPageContext, setParentpublic DirectTableInsertTag()
| 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. |
public int doStartTag()
doStartTag インタフェース内 TagdoStartTag クラス内 CommonTagSupport| 6.2.2.0 (2015/03/27) ColumnActionListener 対応。 |
| 6.2.3.0 (2015/05/01) table属性追加。BODYのSQL文が無くても、table属性で自動生成します。 |
| 6.2.4.0 (2015/05/15) 無条件でOMITする名称を指定します。 |
public int doAfterBody()
doAfterBody インタフェース内 IterationTagdoAfterBody クラス内 CommonTagSupport| 3.6.0.2 (2004/10/04) SQL文の [カラム] 対応とパーサー機能追加 |
| 3.8.6.3 (2006/11/30) SQL 文の前後のスペースを取り除きます。 |
| 6.2.3.0 (2015/05/01) table属性追加。BODYのSQL文が無くても、table属性で自動生成します。 |
protected int afterEnd()
afterEnd クラス内 ReadTableTag| 6.2.2.0 (2015/03/27) #afterEnd() メソッド 新規作成。 |
| 6.2.5.0 (2015/06/05) AutoReaderの仕様変更。checkColumns エラー処理が抜けていたので、追加します。 |
protected void release2()
release2 クラス内 ReadTableTag| 3.6.0.2 (2004/10/04) useColumnCheck,useColumnAdjust 属性追加 |
| 3.8.0.2 (2005/06/30) nullCheck 属性追加 |
| 4.0.0.0 (2007/10/10) dbid の初期値を、"DEFAULT" から null に変更 |
| 5.5.7.1 (2012/10/05) skipRowCount追加 |
| 5.7.6.2 (2014/05/16) stopZero属性追加 |
| 6.2.2.0 (2015/03/27) ColumnActionListener 対応。 |
| 6.2.3.0 (2015/05/01) table属性追加 |
protected void create(java.io.File file)
create クラス内 ReadTableTagfile - ファイルオブジェクト| 3.6.0.2 (2004/10/04) カラムオブジェクトのDBType属性の整合性チェック |
| 3.8.0.2 (2005/06/30) nullチェック確認 |
| 3.8.5.1 (2006/05/08) 取込データが name 列より少ない場合の対応を追加 |
| 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定 |
| 4.0.0.0 (2005/01/31) CheckColumnDataクラス static 化、引数にResourceManager追加 |
| 4.0.0.1 (2007/12/03) try ~ catch ~ finally をきちんと行う。 |
| 5.1.9.0 (2010/08/01) Transaction 対応 |
| 5.2.2.0 (2010/11/01)) ""で囲われているデータに改行が入っていた場合の対応 |
| 5.3.7.0 (2011/07/01) TransactionReal の引数変更 |
| 5.3.8.0 (2011/08/01) pstmt.setObject で、useParamMetaData の判定を避けるため、pstmt.setString で代用(PostgreSQL対応) |
| 5.5.7.1 (2012/10/05) omitFirstLine対応 |
| 5.7.0.3 (2013/11/22) BufferedReaderのclose処理をこのメソッド内のfinallyで行う |
| 6.2.2.0 (2015/03/27) ColumnActionListener 対応。 |
| 6.2.3.0 (2015/05/01) 行読み飛ばし nullSkipClm追加 |
| 6.2.4.2 (2015/05/29) executeCount の設定がおかしい。DirectTableInsertTagでは、初期値が -1 のため、件数が1件少なくなっていた。 |
| 6.2.5.0 (2015/06/05) AutoReaderの仕様変更。checkColumns エラー処理が抜けていたので、追加します。 |
| 6.3.6.1 (2015/08/28) Transaction でAutoCloseableを使用したtry-with-resources構築に対応。 |
| 6.4.3.3 (2016/03/04) HybsSystem.newInstance(String,String) への置き換え。 |
| 6.6.0.1 (2016/12/07) エンコードが複数ある場合、SQLのパースで、上書きするとカラム名が取れないバグ修正。 |
public void setDbid(java.lang.String id)
id - データベース接続ID検索時のDB接続IDを指定します。初期値は、DEFAULT です。
public void setCommitBatch(java.lang.String cmtBat)
cmtBat - コミットを発行する行数 (初期値:0)通常は、全ての処理が正常に終了するか、なにもしないか(トランザクション) を判断すべきで、途中でのコミットはしません。 しかし、場合によって、件数が異常に多い場合や、再実行可能な場合は、 途中でコミットして、都度、処理できるものだけを処理してしまうという方法があります。 また、ロールバックエリアの関係などで、データ量が多い場合に、処理時間が異常に 長くなる事があり、指定件数ごとのコミット機能を用意しています。 0 に設定すると、終了までコミットしません。初期値は、0 です。
public void setTable(java.lang.String tbl)
tbl - テーブルID通常は、BODYに記述したSQL文を実行しますが、テーブルIDを指定すると、 INSERT用のSQL文を自動作成します。 その場合は、BODYのSQL文は設定不要です。 また、FILE.NAME という文字列を指定した場合は、file1 に指定した ファイル名から、拡張子を取り除いた名称をテーブル名として使用します。
| 6.2.3.0 (2015/05/01) table属性追加 |
public void setUseTimeView(java.lang.String flag)
flag - 処理時間を表示 [true:する/false:しない]true に設定すると、処理時間を表示するバーイメージが表示されます。 これは、DB検索、APサーバー処理、画面表示の各処理時間をバーイメージで 表示させる機能です。処理時間の目安になります。 (初期値:VIEW_USE_TIMEBAR[=true])。
| 6.3.6.0 (2015/08/16) useTimeView の初期値を、VIEW_USE_TIMEBAR にする。 |
public java.lang.String toString()
toString クラス内 ReadTableTagWebアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.