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行。
时间: 2024-12-09 21:58:02

SQLLoader6(一个或多个数据文件按条件导入不同的表)的相关文章

记一个手游app数据文件的破解

出于一些很猥琐的需要,同时自己也想做一些新鲜的尝试,周末用了大半天时间破解了某款手游的数据文件. 过程比我预想的要顺利,主要原因还是我们开发人员的懈怠,咳咳. 过程如下: 下载安装包,解压,发现几个XXX.db文件,最感兴趣的是一个50多M的XXX.db 用UltraEdit打开XXX.DB文件,没有任何线索.只发现这几个文件有相同的文件头 搜索.DB文件可能是什么文件,发现了开源库sqlite,这是一个轻量级的数据库组件,IOS就用了这个,顿时眼前一亮 下载sqlite的命令行工具,发现打不开

【表空间支持的最大数据文件大小的算法】【数据库限制】【数据文件文件头保留数据块数】

本地管理表空间中设置不同大小的db_block_size时数据文件头保留空间相应例如以下:--?? db_block_size=2KB,文件头保留32个数据块,即64KB. db_block_size=4KB.文件头保留16个数据块,即64KB. db_block_size=8KB,文件头保留8个数据块,即64KB. db_block_size=16KB,文件头保留4个数据块.即64KB. db_block_size=32KB,文件头保留4个数据块.即128KB. --为什么不是64kb? 默认

Oracle 数据库 数据文件 表 表空间 用户的关系

这涉及到数据库的物理结构和逻辑结构. 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理存储. 每一个Oracle数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数据.逻辑数据库结构(如表.索引等)的数据物理地存储在数据库的数据文件中.数据文件通常为*.dbf格式,例如:userCIMS.dbf.数据文件有下列特征:

PLSQL_Oracle外部表的概念和使用(案例)(通过外部表直接查询数据文件以节数据库表空间)

2014-08-25 BaoXinjian 一.摘要 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件. 因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中. 外部表,顾名思义,存储在数据库外面的表. 当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作). 不能对外部表建立索引.因为创建索引就意味着要存在对应的索引记录.而外部表其

oracle(数据文件)

--创建数据文件 create tablespace--创建表空间同时创建数据文件 create temporary tablespace --创建临时表空间的同时创建临时数据文件 alter tablespace...add datafile --向表空间添加数据文件 alter tablespace...add tempfile--向临时表空间添加数据文件 create database --创建数据库时创建数据文件 alter database...create datefile--数据氈

控制文件,日志文件,数据文件

控制文件中包含了数据库信息.CKPT 进程信息.REDO 信息.数据文件和表空间信息等重要的数据库信息,也包含了日志切换的历史信息和 RMAN 备份的 CATALOG信息 在线日志文件主要用于记录数据库的变更信息. 数据文件是存储Oracle数据库中的数据的,是Oracle数据库最核心的文件.Oracle数据库中的表,索引等都是记录在数据文件中中的.其中系统表空间包含的数据文件里保存了数据库的元数据(metdata),如果metadata出现故障,访问数据库的数据时就会发生问题. 数据文件中还有

Oracle的表空间、数据文件、用户

每一个Oracle数据库都是由三种类型的文件组成:数据文件(Data File).日志文件(Log File)和控制文件(Control File).数据库的文件为数据库信息提供真正的物理存储.      每个数据库有一个或多个物理的数据文件.逻辑数据库结构(如表.索引等)的数据物理地存储在数据库的数据文件中,数据文件通常为*.dbf格式. 数据文件有下列特征: 1.一个数据文件仅与一个数据库联系: 2.一旦建立,数据文件只增不减: 3.一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成

十四、oracle 数据库管理--管理表空间和数据文件

一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括表空间.段.区和块.说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle块构成的这样的一种结构,可以提高数据库的效率. 三.表空间1.概念表空间用于从逻辑上组织数据库的数据.数据库逻辑上是由一个或是多个表空间组成的.通过表空间可以达到以下作用:1).控制数据库占

表空间tablespace,数据文件datafiles,和控制文件control files介绍

https://docs.oracle.com/cd/B19306_01/server.102/b14220/physical.htm#i5919 本文系翻译 表空间tablespace,数据文件datafiles,和控制文件control files介绍 在逻辑上,oracle把数据存储在表空间tablespace中,而在物理上,数据是存储在datafiles中的. 图1 图1很好的诠释了表空间与数据文件的关系,这里这一个表空间对应了两个数据文件,而数据对象如表.索引等,他们只关心表空间,对物