前回の記事:【csh】キックシェルの作成(SQL編)
今回は、SQL*Lorderを使用したシェルを作成したいので、envファイルの他にctlファイルとSQLファイルを作成しましょう。
※初回のみ、SQL*loaderのパラメータファイルも作成する。
1.envファイルの作成
まずは、envファイルから作成していきます。
以下の通り、etcディレクトリにtouchし、nanoエディタで編集する。
※フォルダ構成についてはあとで追加!!!!!!を参照
ABC000.env
setenv RCV_FILE_DIR ${BEANS_BATCH}/out/rcv
setenv DAT_FILE_NM SQL_LORD.DAT
setenv BAD_FILE_NM COMMODITY.bad
setenv HEDERCHK OFF
setenv TRAILERCHK OFF
setenv SQL_FILE_DIR ${BEANS_BATCH}/sql
setenv SQL_FILE_NM PRODUCTS.sql
2.sqlファイルの作成
次に、sqlファイルから作成していきます。
今回はデータのライフサイクルとして、当日に2回実行しても良いように、当日データが存在する場合は削除するSQLを作成したいと思います。
PRODUCTS.sql
/********************************************************/
/*[商品データのライフサイクル]不要データを削除する。 */
/*------------------------------------------------------*/
/*Name : PRODUCTS.sql */
/*Date : yyyy/mm/dd */
/*作成者 : yuya */
/********************************************************/
DELETE
FROM PRODUCTS
WHERE UPDATED_AT = TO_CHAR(SYSDATE,'YYYYMMDD');
COMMIT;
3.ctlファイルの作成
次に、ctlファイルから作成していきます。
PRODUCTS.ctl
/********************************************************/
/*[商品データロード処理 */
/*------------------------------------------------------*/
/*Name : PRODUCTS.ctl */
/*Date : yyyy/mm/dd */
/*作成者 : yuya */
/********************************************************/
OPTIONS (
DIRECT = FALSE,SKIP =1
)
LOAD DATA
BADFILE = "${BEANS_BATCH}//out/tmp/${BAD_FILE_NM}"
APPEND
INTO TABLE PRODUCTS
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY "\""
(
PRODUCT_ID "SEQ_PRODUCT_ID.NEXTVAL",
PRODUCT_NAME,
DESCRIPTION,
PRICE,
STOCK_QUANTITY,
CATEGORY_ID,
SUPPLIER_ID,
SKU,
WEIGHT,
DIMENSIONS,
IMAGE_URL,
CREATED_AT "TO_DATE(:CREATED_AT, 'YYYY-MM-DD HH24:MI:SS')",
UPDATED_AT "TO_DATE(:UPDATED_AT, 'YYYY-MM-DD HH24:MI:SS')"
)
4.SQL*Loaderのパラメータ
キックシェルのSQL*Loaderのオプションで下記パラメータファイルを指定するため、初回のみ作成します。
ldr_common.par
#I am ldr_common.par on rmspt
errors=50000
#bindsize=67108864
### 8192 * 1024 * 8
rows=4096
silent=(header,feedback,discards)
まとめ
今回はSQLの個別シェルを作成した。