public class DirectTableInsertTag extends CommonTagSupport
指定のファイルを直接データベースに登録するデータ入力タグです。 通常の 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}) なども使用できます。 ※ このタグは、Transaction タグの対象です。
●形式:<og:directTableInsert filename="[・・・]" ・・・ >INSERT INTO ・・・ </og:directTableInsert > ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{@XXXX} を解析します) ●Tag定義: <og:directTableInsert fileURL 【TAG】読み取り元ディレクトリ名を指定します (初期値:FILE_URL[=filetemp/]) filename 【TAG】ファイルを作成するときのファイル名をセットします (初期値:FILE_FILENAME[=file.xls]) encode 【TAG】ファイルを作成するときのファイルエンコーディング名をセットします (初期値:FILE_ENCODE[=UnicodeLittle]) separator 【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ) displayMsg 【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました]) columns 【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します commitBatch 【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません) useColumnAdjust 【TAG】カラム変換(DBType変換)を行うかどうかを設定します(初期値:false) useColumnCheck 【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false) nullCheck 【TAG】NULL チェックすべきカラム列をカンマ区切り(CSV形式)で指定します dbid 【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT) skipRowCount 【TAG】データの読み飛ばし件数を設定します(初期値:0) stopZero 【TAG】検索結果が0件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する]) 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 >
修飾子とタイプ | クラスと説明 |
---|---|
(package private) static class |
DirectTableInsertTag.CheckColumnData
カラム変換、カラムチェックを行う内部クラス
|
bodyContent
id, pageContext
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
EVAL_BODY_AGAIN
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
コンストラクタと説明 |
---|
DirectTableInsertTag() |
修飾子とタイプ | メソッドと説明 |
---|---|
int |
doAfterBody()
Taglibのタグ本体を処理する doAfterBody() を オーバーライドします。
|
int |
doEndTag()
Taglibの終了タグが見つかったときに処理する doEndTag() を オーバーライドします。
|
int |
doStartTag()
Taglibの開始タグが見つかったときに処理する doStartTag() を オーバーライドします。
|
protected void |
release2()
タグリブオブジェクトをリリースします。
|
void |
setColumns(String clms)
【TAG】#NAME 属性の代わりとなるファイルのカラム名を CSV形式で指定します。
|
void |
setCommitBatch(String cmtBat)
【TAG】指定数毎にコミットを発行します(初期値:0 終了までコミットしません)。
|
void |
setDbid(String id)
【TAG】(通常は使いません)検索時のDB接続IDを指定します(初期値:DEFAULT)。
|
void |
setDisplayMsg(String id)
【TAG】query の結果を画面上に表示するメッセージIDを指定します(初期値:MSG0040[ 件登録しました])。
|
void |
setEncode(String enc)
【TAG】ファイルを作成するときのファイルエンコーディング名をセットします
(初期値:FILE_ENCODE[=UnicodeLittle])。
|
void |
setFilename(String filename)
【TAG】ファイルを作成するときのファイル名をセットします
(初期値:FILE_FILENAME[=file.xls])。
|
void |
setFileURL(String url)
【TAG】読み取り元ディレクトリ名を指定します
(初期値:FILE_URL[=filetemp/])。
|
void |
setNullCheck(String clms)
【TAG】NULL チェックすべきカラム列をカンマ区切り(CSV形式)で指定します。
|
void |
setSeparator(String separator)
【TAG】可変長ファイルを作成するときの項目区切り文字をセットします(初期値:タブ)。
|
void |
setSkipRowCount(String count)
【TAG】取り込み時に除外する行を指定します(初期値:0)。
|
void |
setStopZero(String cmd)
【TAG】検索結果が0件のとき処理を続行するかどうか[true/false]を指定します(初期値:false[続行する])。
|
void |
setUseColumnAdjust(String flag)
【TAG】カラム変換(DBType変換)を行うかどうかを設定します(初期値:false)。
|
void |
setUseColumnCheck(String flag)
【TAG】カラムチェック(DBTypeチェック)を行うかどうかを設定します(初期値:false)。
|
String |
toString()
このオブジェクトの文字列表現を返します。
|
add, add, addEventColumn, addEventColumn, check, check, commitTableObject, debugPrint, doCatch, doFinally, get, getApplicationInfo, getAttributes, getBodyRawString, getBodyString, getContextAttribute, getContextPath, getCookie, getCSVParameter, getDataCondition, getDateFormat, getDBColumn, getDBFunctionName, getDocumentLink, getGUIInfo, getGUIInfoAttri, getHostName, getLabel, getLabelInterface, getLanguage, getLASTAttri, getLongLabel, getMsglbl, getNVLAttri, getObject, getParameterNames, getParameterRows, getRequest, getRequestAttribute, getRequestCacheData, getRequestParameter, getRequestParameterValues, getRequestValue, getRequestValue, getRequestValues, getReservedParameter, getReservedValue, getResource, getSanitizedBodyString, getScope, getSessionAttribute, getTagName, getUser, getUserInfo, isAjaxSubmitRequest, isDebug, isNoTransitionRequest, isNull, jspPrint, removeContextAttribute, removeObject, removeRequestAttribute, removeSessionAttribute, set, setAjaxSubmitRequest, 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, useXssCheck
doInitBody, getBodyContent, getPreviousOut, release, setBodyContent
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getParent, setPageContext, setParent
public int doStartTag()
doStartTag
インタフェース内 Tag
doStartTag
クラス内 CommonTagSupport
public int doAfterBody()
doAfterBody
インタフェース内 IterationTag
doAfterBody
クラス内 CommonTagSupport
3.6.0.2 (2004/10/04) SQL文の [カラム] 対応とパーサー機能追加 |
3.8.6.3 (2006/11/30) SQL 文の前後のスペースを取り除きます。 |
public int doEndTag()
doEndTag
インタフェース内 Tag
doEndTag
クラス内 CommonTagSupport
4.0.0.0 (2007/10/18) メッセージリソース統合( getResource().getMessage ⇒ getResource().getLabel ) |
5.7.0.3 (2013/11/22) BufferedReaderのcloseをcreate内で行うように変更 |
5.7.6.2 (2014/05/16) stopZero属性、DB.COUNT キーで検索件数をリクエストにセットする。 |
protected void release2()
release2
クラス内 CommonTagSupport
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属性追加 |
public void setDbid(String id)
id
- データベース接続ID検索時のDB接続IDを指定します。初期値は、DEFAULT です。
public void setSeparator(String separator)
separator
- 項目区切り文字可変長ファイルを作成するときの項目区切り文字をセットします。
public void setFileURL(String url)
url
- ファイルURLSystemData.FILE_URL
この属性で指定されるディレクトリより、ファイルを読み取ります。 指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、 ":" (Windows)の場合は、指定のURLそのままのディレクトリに、そうでない場合は、 fileURL = "{@USER.ID}" と指定すると、FILE_URL 属性で指定のフォルダの下に、 さらに、各個人ID別のフォルダの下より、読み取ります。 (初期値:システム定数のFILE_URL[=filetemp/])。
4.0.0.0 (2005/01/31) StringUtil.urlAppend メソッドの利用 |
4.0.0.0 (2007/11/20) 指定されたディレクトリ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。 |
public void setFilename(String filename)
filename
- ファイル名SystemData.FILE_FILENAME
ファイルを作成するときのファイル名をセットします。 (初期値:システム定数のFILE_FILENAME[=file.xls])。
public void setEncode(String enc)
enc
- ファイルエンコーディング名SystemData.FILE_ENCODE
初期値は、システムパラメータ の FILE_ENCODE 属性で、設定しています。 Shift_JIS,MS932,Windows-31J,UTF-8,ISO-8859-1,UnicodeLittle・・・ (初期値:システム定数のFILE_ENCODE[=UnicodeLittle])。
public void setDisplayMsg(String id)
id
- ディスプレイに表示させるメッセージ IDここでは、検索結果の件数や登録された件数をまず出力し、 その次に、ここで指定したメッセージをリソースから取得して 表示します。 表示させたくない場合は, displayMsg = "" をセットしてください。 初期値は、検索件数を表示します。 ※ この属性には、リクエスト変数({@XXXX})は使用できません。
public void setColumns(String clms)
clms
- ファイルのカラム名(カンマ区切り文字)データファイルの先頭行に、#NAME 行があり、読み取るべきファイルの カラム名が記述されています。通常は、このカラム名を取り込んで、 各データ列のカラムを指定します。 この属性は、ファイルに#NAME 行が存在しない(他システムからの入力ファイル等) 場合に、#NAME 属性の代わりに、カラム名を外部より指定します。
3.8.5.1 (2006/05/08) getCSVParameter の使用を中止 |
public void setCommitBatch(String cmtBat)
cmtBat
- 指定数毎にコミットを発行(初期値:0)通常は、全ての処理が正常に終了するか、なにもしないか(トランザクション) を判断すべきで、途中でのコミットはしません。 しかし、場合によって、件数が異常に多い場合や、再実行可能な場合は、 途中でコミットして、都度、処理できるものだけを処理してしまうという方法があります。 また、ロールバックエリアの関係などで、データ量が多い場合に、処理時間が異常に 長くなる事があり、指定件数ごとのコミット機能を用意しています。 0 に設定すると、終了までコミットしません。初期値は、0 です。
public void setUseColumnCheck(String flag)
flag
- チェックを行うかどうか(true:行う/false:行わない)setUseColumnAdjust( String )
カラムの整合性チェックを行う場合、この属性を設定(true)します。 初期値は、行わない(false)です。 チェックするカラムは、#NAME や columns で指定されたカラムではなく、 BODY部のSQL文で指定されたカラム名( [カラム名] )です。これは、直接、SQL文中に 記述している値や、{@XXXX}文字等は、チェック出来ない為です。
3.6.0.2 (2004/10/04) 新規追加 取り込み時全チェック |
public void setUseColumnAdjust(String flag)
flag
- 変換を行うかどうか(true:行う/false:行わない)setUseColumnCheck( String )
カラムの変換を行う場合、この属性を設定(true)します。 初期値は、行わない(false)です。 変換するカラムは、#NAME や columns で指定されたカラムではなく、 BODY部のSQL文で指定されたカラム名[カラム名]です。これは、直接、SQL文中に 記述している値や、{@XXXX}文字等は、変換出来ない為です。
3.6.0.2 (2004/10/04) 新規追加 取り込み時変換 |
public void setNullCheck(String clms)
clms
- カラム列(CSV形式)nullCheck="AAA,BBB,CCC,DDD" 分解方法は、通常のパラメータ取得後に、CSV分解します。
3.8.0.2 (2005/06/30) 新規追加 |
3.8.8.5 (2007/03/09) 通常のパラメータ取得後に、CSV分解に戻します。 |
public void setSkipRowCount(String count)
count
- 先頭行を無視するかどうか(true:無視する/false:無視しない)TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。 ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 #NAME属性や、columns 属性は、有効です。
5.5.7.1 (2012/10/05) 新規追加 |
public void setStopZero(String cmd)
cmd
- 検索結果が0件のとき、[true:処理を中止する/false:続行する]初期値は、false(続行する)です。
5.7.6.2 (2014/05/16) 新規追加 |
public String toString()
toString
クラス内 CommonTagSupport
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.