学无止境
分类: Oracle
2010-07-09 17:50:37
使用sqlload导入到多表
table2.dat
有如下数据:
emp,1,"jusdoi"
ldd,3324,"liaodaiyi"
emp,5,"地面进攻"
ldd,6788,"zhangxiaoxu"
ldd,9321,"wanghuihui"
目的要把这些数据插入到2张不同的表中
其中emp的数据插入到emp表中,
ldd的数据插入到ldd表中。
emp和ldd表都只有2个字段,table2.dat中记录的第一个字段(emp或ldd)需要忽略。
SQL> desc emp;
名称 是否为空? 类型
----------------------------------------- -------- --------------
DEPTNO NUMBER(10)
ENAME VARCHAR2(20)
SQL> desc ldd
名称 是否为空? 类型
----------------------------------------- -------- ------------------
DATA1 VARCHAR2(20)
DATA2 VARCHAR2(20)
table2.ctl文件内容如下,其中(01)表示第一条记录。
LOAD DATA
INFILE 'table2.dat'
Append
INTO TABLE emp
WHEN (01) ='emp'
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'
(
mark filler POSITION(01),
deptno,
ename
)
INTO TABLE ldd
WHEN (01) = 'ldd'
fields terminated by ',' OPTIONALLY ENCLOSED BY '"'
(
mark filler POSITION(01),
data1,
data2
)
使用sqlldr导入:
sqlldr ldy/ldy control=table2.ctl log=table2.log
查看导入内容:
SQL> select * from ldd;
DATA1 DATA2
-------------------- --------------------
3324 liaodaiyi
6788 zhangxiaoxu
9321 wanghuihui
SQL> select * from emp;
DEPTNO ENAME
---------- --------------------
1 jusdoi
5 地面进攻