SQL*LOAD 数据文件与目标表数目不一致加载
2016-03-21 09:57
357 查看
本节所讲的数据文件与目标表数目不一致指2种情况:第一种,多个数据文件加载到单个目标表中;第二种,单个数据文件加载多个目标表中。
1.多个数据文件加载到单个目标表中
下面就将数据文件test06.dat、test07.dat、test08.dat加载到LoadTest表为例,数据文件内容分别如下:
数据文件test06.dat如下:
45,data,update
46,clicl,insert
47,wang,replace
48,sing,insert
数据文件test07.dat如下:
数据文件test08.dat如下:
对应该数据文件的控制文件test06.ctl如下:
运行SQL*Loader,加载数据,
[oracle@nn ~]$ sqlldr nn/123 control=/home/oracle/test06.ctl
通过SQL*Plus查询加载结果:
SQL> SELECT t.* FROM loadtest t;
2.单个数据文件加载多个目标表中
比如,将数据文件test09.dat中OPERTYPE字段值为“insert”的数据导入到LOADIN表中,字段值为“update”的数据导入到LOADUP表中。
数据文件test09.dat如下:
对应该数据文件的控制文件test09.ctl如下:
注意:同一个文件导入到2张以上表的情况,when后面必须要个POSITION,否则第2张表加载不了。
运行SQL*Loader,加载数据,
[oracle@nn ~]$ sqlldr nn/123 control=/home/oracle/test09.ctl
通过SQL*Plus查询加载结果,可见OPERTYPE字段值为“insert”的数据导入到LOADIN表中,字段值为“update”的数据导入到LOADUP表中,其他的数据存入了test09.dsc文件中。
1.多个数据文件加载到单个目标表中
下面就将数据文件test06.dat、test07.dat、test08.dat加载到LoadTest表为例,数据文件内容分别如下:
数据文件test06.dat如下:
45,data,update
46,clicl,insert
47,wang,replace
48,sing,insert
数据文件test07.dat如下:
51,fgu,update 52,kll,insert
数据文件test08.dat如下:
53,fgfh,update 54,tt,insert 55,gg,replace
对应该数据文件的控制文件test06.ctl如下:
LOAD DATA INFILE test06.dat INFILE test07.dat INFILE test08.dat DISCARDFILE 'test06.dsc' TRUNCATE INTO TABLE LOADTEST FIELDS TERMINATED BY"," (LOADID, OPERNAME,OPERTYPE)
运行SQL*Loader,加载数据,
[oracle@nn ~]$ sqlldr nn/123 control=/home/oracle/test06.ctl
通过SQL*Plus查询加载结果:
SQL> SELECT t.* FROM loadtest t;
2.单个数据文件加载多个目标表中
比如,将数据文件test09.dat中OPERTYPE字段值为“insert”的数据导入到LOADIN表中,字段值为“update”的数据导入到LOADUP表中。
数据文件test09.dat如下:
1,data,update 2,,insert 3,yju,replace 4,sing,insert 5,hyui,update 6,clicl,insert 7,gg,replace 8,dfh,insert
对应该数据文件的控制文件test09.ctl如下:
LOAD DATA INFILE test09.dat DISCARDFILE 'test09.dsc' TRUNCATE INTO TABLE LOADIN WHEN OPERTYPE='insert' FIELDS TERMINATED BY"," TRAILING NULLCOLS (LOADID, OPERNAME,OPERTYPE) INTO TABLE LOADUP WHEN OPERTYPE='update' FIELDS TERMINATED BY"," (LOADID POSITION(1), OPERNAME POSITION(3:6),OPERTYPE POSITION(8:14))
注意:同一个文件导入到2张以上表的情况,when后面必须要个POSITION,否则第2张表加载不了。
运行SQL*Loader,加载数据,
[oracle@nn ~]$ sqlldr nn/123 control=/home/oracle/test09.ctl
通过SQL*Plus查询加载结果,可见OPERTYPE字段值为“insert”的数据导入到LOADIN表中,字段值为“update”的数据导入到LOADUP表中,其他的数据存入了test09.dsc文件中。
SQL> SELECT t.* FROM loadin t; SQL> SELECT t.* FROM loadup t;
相关文章推荐
- SQLPlus命令范例代码
- oracle 11g下载_oracle11下载
- Oracle 11g R1/R2 真正应用集群(RAC)基础
- Oracle 11g 64位,PLSQL Developer无法登录
- AIX 5.3安装oracle 11g
- win7 64位 安装win64_11gR2遇到的2个问题
- SQL*Loader使用方法
- oracle 11g 错误之ORA-09925: Unable to create audit trail file解决办法之一!
- Oracle 11G R2 在windows server 2008 64位安装时提示:无法在windows "开始"菜单或桌面上创建项
- Oracle 11g active standby不能实时同步解决
- oversubscribed dynamic bit lengths tree
- Ubuntu12.04.4安装 oracle 11g Release 2 (11.2) for Linux x86
- Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 .
- ODI11G 在Linux上的安装配置
- BIEE11G在Linux上的安装
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习入门实例
- oracle 11g Server端 安装
- oracle 11g client端 安装
- Oracle在windows下需要哪些服务
- Oracle 11g的密码更新