LastUpdate: 2019/06/05 23:45:37
戻るhttp://www.shift-the-oracle.com/inside/direct-pass-insert.html
サンプルテーブル
CREATE TABLE SHODAI.TEST2 ( KEY CHAR(4), DATA1 NUMBER(10,0), DATA2 CHAR(20), DATA3 CHAR(1000) ) /
ほげほげ…と書きましょう
いろんな例 カンマ区切をそのまま入れる
set USERID="iii/ppp@ORA" sqlldr userid=%USERID% control='TBL00ABC.CTL' skip=1 log=TBL00ABC.log direct=true
LOAD DATA INFILE 'TBL00ABC.DAT' TRUNCATE PRESERVE BLANKS INTO TABLE TBL00ABC FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( "項目名1", "項目名2", "運用開始日", "運用終了日", "金額" )
いろんな例 データファイルをコマンラインから強制指定する
set USERID="iii/ppp@ORA" sqlldr userid=%USERID% control='TBL00ABC.CTL' skip=1 log=TBL00ABC.log direct=true DATA=ABC.TXT
LOAD DATA INFILE 'TBL00ABC.DAT' TRUNCATE PRESERVE BLANKS INTO TABLE TBL00ABC FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( "項目名1", "項目名2", "運用開始日", "運用終了日", "金額" )
日付項目の入れ込みの例
4;4;4;4;;; 2;2;2;20;ABC;20080101000000; 3;3;3;30;ABCDEFGHIJ;20081231010101; 1;1;1;10;;99991231235959;LOAD DATA INFILE 'TEST01.DAT' APPEND INTO TABLE TEST01 FIELDS TERMINATED BY ";" TRAILING NULLCOLS ( "KEY1", "DATA1", "DATA2", "DATA3", "DATA4", "DATA5" DATE "yyyyMMddhh24miss" )
システム日付の決め打ち
LOAD DATA INFILE 'TEST01.DAT' APPEND INTO TABLE TEST01 FIELDS TERMINATED BY ";" TRAILING NULLCOLS ( "KEY1", "DATA1", "DATA2", "DATA3", "DATA4", "DATA5" DATE "yyyyMMddhh24miss" "DATA6" "SYSDATE" )
SYSDATE の後にも項目が続く場合…など、
項目の並びとしては、SYSDATEの分も、項目が必要に思われる。空文字でも良いから、DATE6に相当する項目を用意しておけ
4;4;4;4;;;;あ; 2;2;2;20;ABC;200801010000;;あ; 3;3;3;30;ABCDEFGHIJ;20081231010101;;あ; 1;1;1;10;;99991231235959;;あ;LOAD DATA INFILE 'TEST01.DAT' APPEND INTO TABLE TEST01 FIELDS TERMINATED BY ";" TRAILING NULLCOLS ( "KEY1", "DATA1", "DATA2", "DATA3", "DATA4", "DATA5" DATE "yyyyMMddhh24miss", "DATA6" "SYSDATE", "DATA7" )
データファイルは、ブランク(空カンマ)になっている項目に対し、システム日付の埋め込み
その2 上の例でできない時は…下記のように
( … "なんとか区分", "更新日付" DATE "yyyy/MM/dd hh24:mi:ss" "to_char(SYSDATE,'yyyy/MM/dd hh24:mi:ss')", "なんとかID", …
この例は PRESERVE BLANKS が無い時の例だ。PRESERVE BLANKS をつけていれば、 "DATA6" "SYSDATE", のような記述でいける!
空白を空白のデータとして みなすようにするには
PRESERVE BLANKS
LOAD DATA INFILE 'TEST01.DAT' APPEND PRESERVE BLANKS INTO TABLE TEST01 FIELDS TERMINATED BY ";" TRAILING NULLCOLS ( "KEY1", "DATA1", "DATA2", "DATA3", "DATA4", "DATA5" DATE "yyyyMMddhh24miss", "DATA6" "SYSDATE", "DATA7" )PRESERVE BLANKS を指定する順番は、微妙に影響があるみたい…詳細は未調査