SQLLoader6(一个或多个数据文件按条件导入不同的表)
测试一
1、创建表:
SQL> create table tab_b(col1 varchar2(2), col2 number(2)); 表已创建。 SQL> create table tab_a(col1 varchar2(2), col2 number(2)); 表已创建。 SQL> COMMIT; 提交完成。
2、数据文件:test.txt
A 1
A 2
A 3
B 3
B 2
B 1
3、控制文件:testSqlLdr2.ctl
LOAD DATA
INFILE 'D:\oracletest\test.txt'
DISCARDFILE 'D:\oracletest\testSqlLdr2.dsc'
REPLACE
INTO TABLE TAB_A
WHEN COL1="A"
(COL1 position(1:1),COL2 position(3:4))
INTO TABLE TAB_B
WHEN COL1="B"
(COL1 position(1:1),COL2 position(3:4))
4、执行导入
D:\oracletest>sqlldr scott/tiger@orcl control=D:\oracletest\testSqlLdr2.ctl SQL*Loader: Release 11.2.0.1.0 - Production on 星期日 11月 30 21:27:16 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 达到提交点 - 逻辑记录计数 5
达到提交点 - 逻辑记录计数 6
5、查看结果:
SQL> SELECT * FROM TAB_A; CO COL2
-- ----------
A 1
A 2
A 3 SQL> SELECT * FROM TAB_B; CO COL2
-- ----------
B 3
B 2
B 1
测试二
1、创建测试表
SQL> CREATE TABLE EMP_DEPT10 AS SELECT * FROM EMP WHERE DEPTNO=10 AND 1=2; 表已创建。 SQL> CREATE TABLE EMP_DEPT20 AS SELECT * FROM EMP WHERE DEPTNO=20 AND 1=2; 表已创建。 SQL> CREATE TABLE EMP_DEPT30 AS SELECT * FROM EMP WHERE DEPTNO=30 AND 1=2; 表已创建。 SQL> SELECT * FROM EMP_DEPT10; 未选定行 SQL> SELECT * FROM EMP_DEPT20; 未选定行 SQL> SELECT * FROM EMP_DEPT30; 未选定行 SQL>
2、数据文件
--D:\oracletest\test1.txt
1 7782 CLARK MANAGER 7839 1981-06-09 2450 0 10
1 7839 KING PRESIDENT 1111 1981-11-17 5000 0 10
1 7934 MILLER CLERK 7782 1982-01-23 1300 0 10
--D:\oracletest\test2.txt
2 7369 SMITH CLERK 7902 1980-12-17 800 0 20
2 7566 JONES MANAGER 7839 1981-04-02 2975 0 20
2 7788 SCOTT ANALYST 7566 1987-04-19 3000 0 20
2 7876 ADAMS CLERK 7788 1987-05-23 1100 0 20
2 7902 FORD ANALYST 7566 1981-12-03 3000 0 20
--D:\oracletest\test3.txt
3 7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
3 7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
3 7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
3 7698 BLAKE MANAGER 7839 1981-05-01 2850 123 30
3 7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
3 7900 JAMES CLERK 7698 1981-12-03 950 0 30
3、控制文件
LOAD DATA
INFILE 'D:\oracletest\test1.txt'
INFILE 'D:\oracletest\test2.txt'
INFILE 'D:\oracletest\test3.txt'
BADFILE 'D:\oracletest\testSqlLdr3.bad'
DISCARDFILE 'D:\oracletest\testSqlLdr3.dsc'
REPLACE
INTO TABLE EMP_DEPT10
WHEN FLAG="1" --用flag做标记
FIELDS TERMINATED BY WHITESPACE
(FLAG FILLER POSITION(1), --一定要指定POSITION(1)不能省略,只有指定POSITION(1)才能决定数据从第一列开始读取,否则会出现空值或数据列错位。
EMPNO,ENAME,JOB,MGR,HIREDATE DATE "YYYY-MM-DD" ,SAL,COMM,DEPTNO)
INTO TABLE EMP_DEPT20
WHEN FLAG="2"
FIELDS TERMINATED BY WHITESPACE
(FLAG FILLER POSITION(1),
EMPNO,ENAME,JOB,MGR,HIREDATE DATE "YYYY-MM-DD",SAL,COMM,DEPTNO)
INTO TABLE EMP_DEPT30
WHEN FLAG="3"
FIELDS TERMINATED BY WHITESPACE
(FLAG FILLER POSITION(1),
EMPNO,ENAME,JOB,MGR,HIREDATE DATE "YYYY-MM-DD",SAL,COMM,DEPTNO)
4、执行导入命令
D:\oracletest>sqlldr scott/tiger@orcl control=D:\oracletest\testSqlLdr3.ctl SQL*Loader: Release 11.2.0.1.0 - Production on 星期日 11月 30 22:32:49 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 达到提交点 - 逻辑记录计数 2
达到提交点 - 逻辑记录计数 3
达到提交点 - 逻辑记录计数 7
达到提交点 - 逻辑记录计数 8
达到提交点 - 逻辑记录计数 13
达到提交点 - 逻辑记录计数 14
5、检查导入结果
SQL> select * from emp_dept10; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 1981-06-09 2450 0 10
7839 KING PRESIDENT 1111 1981-11-17 5000 0 10
7934 MILLER CLERK 7782 1982-01-23 1300 0 10 SQL> select * from emp_dept20; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 800 0 20
7566 JONES MANAGER 7839 1981-04-02 2975 0 20
7788 SCOTT ANALYST 7566 1987-04-19 3000 0 20
7876 ADAMS CLERK 7788 1987-05-23 1100 0 20
7902 FORD ANALYST 7566 1981-12-03 3000 0 20 SQL> select * from emp_dept30; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 1981-02-20 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 1250 500 30
7654 MARTIN SALESMAN 7698 1981-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 2850 123 30
7844 TURNER SALESMAN 7698 1981-09-08 1500 0 30
7900 JAMES CLERK 7698 1981-12-03 950 0 30 已选择6行。
SQLLoader6(一个或多个数据文件按条件导入不同的表)的更多相关文章
- Tableau学习Step2一数据文件的读取与统计图、表的概述
Tableau学习Step2一数据文件的读取与统计图.表的概述 本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一. 前言 本教程通过一个案例从浅到深来学习Tableau知识 案例概述: 二 ...
- 记一个手游app数据文件的破解
出于一些非常猥琐的须要,同一时候自己也想做一些新奇的尝试,周末用了大半天时间破解了某款手游的数据文件. 过程比我预想的要顺利,主要原因还是我们开发者的懈怠.咳咳. 步骤例如以下: 下载安装包,解压,发 ...
- Oracle-11g 从表空间删除数据文件
从表空间删除数据文件前提条件 如果欲从表空间中删除数据文件,那么该数据文件必须为空,否则将报出"ORA-03262: the file is non-empty"的错误. 从表 ...
- 浅谈Oracle中物理结构(数据文件等。。。)与逻辑结构(表空间等。。。。。)
初始Oracle时很难理解其中的物理结构和逻辑结构,不明白内存中和硬盘中文件的区别和联系,我也是初学Oracle,这里就简单的谈谈我我看法. 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作 ...
- Oracle的表空间和数据文件
一. 概念 表空间:是一个或多个数据文件的逻辑集合 表空间逻辑存储对象: 永久段-->如表与索引 临时段-->如临时表数据与排序段 回滚段-->用于事物回滚或闪回内存的撤销数据 表空 ...
- 关于oracle修复控制文件与数据文件不一致的问题----
本小菜鸟周末鼓捣数据库关于rman恢复与备份方面的实验,结果不知道哪根筋搭错了,手一哆嗦,做了不知道什么操作,就出现了数据库打不开的严重状态,只能开启到mount状态,但是切换到open状态时就会报错 ...
- 管理表空间和数据文件<六>
数据库管理 -- 管理表空间和数据文件 介绍 表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库则是存放在表空间中,表 空间由一个或多个数据文件组成. 数据库 ...
- 巧用AWK处理二进制数据文件
AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件. ...
- 【转】Oracle 表空间与数据文件
--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...
随机推荐
- openssl 非对称加密算法DSA命令详解
1.DSA算法概述 DSA算法是美国的国家标准数字签名算法,它只能用户数字签名,而不能用户数据加密和密钥交换. DSA与RSA的生成方式不同,RSA是使用openssl提供的指令一次性的生成密钥(包括 ...
- python - 面向对象(一)
python是一门面向对象的编程语言,python中的一切均是对象. 有对象就提到类,对象和类就像是儿子和老子的关系,是不可分的一对. 什么是类 类就是具有一些共同特性的事物的统称.好比人类, ...
- <.net>委托初探
最近在学<.net深入体验与实战精要>. 今天就来初步讲解下委托. 一句话:委托定义了方法类型,可以将方法当做另一个方法的参数进行传递.委托包涵的只是方法的地址,而不是数据.类似于c指针. ...
- List.removeAll()方法失效
List.removeAll()方法失效 前几天遇到List.removeAll()方法失效,测试了半天都没测出来,后面跟老大在那边调试了半天,最后终于找出原因,以后要是谁遇到这个奇葩的问题可以借鉴参 ...
- cobar和tddl分享
Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务.那么具体说说我们为什么要用它,或说cobar--能干什么?以下 ...
- HTML解析利器 - HtmlAgilityPack
HtmlAgilityPack 是CodePlex 上的一个开源项目.它提供了标准的DOM API 和XPath 导航--即使 HTML 不是适当的格式! 使用HtmlAgilityPack操作HTM ...
- 再入门JavaScript
从去年毕业到现今,工作不到一年.接触了3个实际项目,一个实训项目.却反而只有实训项目做的比较像样子. 重新又回到写脚本的岗位上,第一次真正意义上接触脚本应该是在达内培训时候李大神所引进,大神各种技术, ...
- HTML中元素水平居中。
一丶margin:0 auto; 试用最多的方法,简单实用. 二丶vertical-align:middle; 只适用于内嵌元素,比如说一个div中有一个图片和文字,要让图片和文字中线对齐. < ...
- 锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用
1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpR ...
- pyopenssl
https://pyopenssl.readthedocs.org/en/stable/ pyopenssl是一个封装了openssl的python模块. 使用它可以方便地进行一些加解密操作. 1.产 ...