0
0

【csh】個別シェルの作成(SQL編)

Posted at

前回の記事:【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の個別シェルを作成した。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0