SQL*Loaderでテーブルをクリアしてからデータを取り込むには、
「TRUNCATE」を指定すればOKです。
サンプル
例)テーブルをクリアしてからデータを取り込む制御ファイル(ctlファイル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
OPTIONS (SKIP=1) --1行目をスキップする LOAD DATA CHARACTERSET JA16SJIS --文字コードはSJIS INFILE 'C:¥商品マスタ.csv' --取り込みファイル BADFILE 'C:¥商品マスタ.bad' --batファイル TRUNCATE --テーブルをTRUNCATEしてから取り込む INTO TABLE 商品マスタ --テーブル名 FIELDS TERMINATED BY ',' --区切り文字はカンマ TRAILING NULLCOLS --データなしの場合はNULLにする ( --テーブルの列 CD, NAME, PRICE, TEKIYO ) |
上記6行目がTRUNCATEの指定です。
TRUNCATE以外の指定
TRUNCATE以外にも以下のような指定が可能です。
キーワード | 意味 |
---|---|
TRUNCATE | テーブルの既存データをすべて削除してからロードする |
INSERT | テーブルが空の場合のみロードする (空でない場合はエラー) |
REPLACE | テーブルの既存行をDELETEしてからロードする |
APPEND | 既存データはそのままにロードする (主キーが被ったらエラー) |
上記キーワードはどれか1つのみ指定可能です。
解説
- TRUNCATEを指定すると、既存データはもとに戻せないのでご注意ください。