存储 频道

SQLLDR使用小结(下)

7 ***** 合并多行记录为一行记录  
LOAD DATA  
INFILE *  
concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录  
INTO TABLE DEPT  
replace  
FIELDS TERMINATED BY ','  
(DEPTNO,  
DNAME "upper(:dname)",  
LOC "upper(:loc)",  
LAST_UPDATED date 'dd/mm/yyyy'  
)  
BEGINDATA  
10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000  
Virginia,  
1/5/2000  
// 这列子用 continueif list="," 也可以  
告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行  
  
LOAD DATA  
INFILE *  
continueif this(1:1) = '-' // 找每行的开始是否有连接字符 - 有就把下一行连接为一行  
// 如 -10,Sales,Virginia,  
// 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000  
// 其中1:1 表示从第一行开始 并在第一行结束 还有continueif next 但continueif list最理想  
INTO TABLE DEPT  
replace  
FIELDS TERMINATED BY ','  
(DEPTNO,  
DNAME "upper(:dname)",  
LOC "upper(:loc)",  
LAST_UPDATED date 'dd/mm/yyyy'  
)  
BEGINDATA // 但是好象不能象右面的那样使用  
-10,Sales,Virginia, -10,Sales,Virginia,  
1/5/2000 1/5/2000  
-40, 40,Finance,Virginia,13/04/2001  
Finance,Virginia,13/04/2001
  
8 ***** 载入每行的行号  
  
load data  
infile *  
into table t  
replace  
( seqno RECNUM //载入每行的行号  
text Position(1:1024))  
BEGINDATA  
fsdfasj //自动分配一行号给载入 表t 的seqno字段 此行为 1  
fasdjfasdfl // 此行为 2 ...  
0
相关文章