將txt數據裝載到數據庫
數據無””,裝載定長
LOAD DATA
CHARACTER-SET ZHS16GBK
truncate/append into table a
FIELDS TERMINATED BY ‘,’
TRAILING NULLCOLS
(a position(1:8),
b position(9:38),
c position(39:57)”:c/1000000”
)
a char(8)
b char(30)
c number(18,6)
數據有””,
LOAD DATA
CHARACTER-SET ZHS16GBK
truncate into table a
FIELDS TERMINATED BY ‘分隔符’
OPTIONALLY ENCLOSED BY ‘“‘
TRAILING NULLCOLS
(”a” “trim(:a)”,
”b” “trim(:b)”
)
例如一個字段無分隔符
LOAD DATA
CHARACTER-SET ZHS16GBK
INFILE ‘error.txt’
BADFILE ‘error.bad’
DISCARDFILE ‘error.dsc’
truncate into table a
(acount position(1 :30))
FILEDS給出記錄中字段的分隔符。
FILEDS[TERMINATED [BY] (WITHSPACE|’CHARCTER’)]
[OPTIONALLY] ENCLOSED [BY] ‘CHARCTER’]
TERMINATED 讀完前一個字段讀下一個字段
WITHSPACE 結束符是空格的意思。包括空格,tab,換行符,換頁符及回車。
OPTIONALLY ENCLOSED 表示數據由特殊字符括起來。使用OPTIONALLY同時要使用TERMINATED
TRAILING NULLCOLS變表字段沒有對應值允許為空
sqlldr 用戶名/密碼@數據庫名 data=/etl/a.txt control=/etl/b.ctl log=/etl/c.log
裝載數據如果有重復數據可刪除主鍵
select constraint_name from user_constraints where constraint_type=‘p’
and owner=‘用戶名’ and table_name=‘大寫表名’;
alter table a drop constraint xxx;
導入數據后增加主鍵
alter table a add constraint pk_a primary key(xx,xx);
或者
alter table a drop primary key;
數據加載后再建主鍵
alter table a add primary key(zz,xx);
違反唯一標志時候
alter table a enable row movement;