SQL*Loader的使用总结(三)

2024-06-06 06:38

本文主要是介绍SQL*Loader的使用总结(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SQL*Loader对不同文件及格式的处理方法

1.多个数据文件,导入同一张表

通常对于逻辑比较复杂的系统可能存在这种情况,因为导出的数据来源于多个系统, 因此可能提供给DBA的也是多个数据文件。这种情况并不一定需要执行多次加载,只需要在控制文件中做适当配置即可。不过有一点非常重要,提供的数据文件中的数据存放格式必须完全相同。

创建演示表Manager表

--创建Manager表
CREATE TABLE MANAGER
(
MGRNO     NUMBER,
MNAME     VARCHAR2(30),
JOB       VARCHAR2(300),
REMARK    VARCHAR2(4000)
);
Table created.
有多个数据文件,分别如下:

--数据文件1
[oracle@cancer ~]$ cat ldr_case8_1.dat 
10,SMITH,SALES MANAGER
11,ALLEN.W,TECH MANAGER
16,BLAKE,HR MANAGER--数据文件2
[oracle@cancer ~]$ cat ldr_case8_2.dat 
12,WARD,SERVICE MANAGER
13,TURNER,SELLS DIRECTOR
15,JAMES,HR DIRECTOR--数据文件3
[oracle@cancer ~]$ cat ldr_case8_3.dat 
17,MILLER,PRESIDENT

创建控制文件,制定多个INFILE参数即可,控制文件如下:

--控制文件
[oracle@cancer ~]$ cat ldr_case8.ctl 
LOAD DATA
INFILE ldr_case8_1.dat
INFILE ldr_case8_2.dat
INFILE ldr_case8_3.dat
TRUNCATE INTO TABLE MANAGER
FIELDS TERMINATED BY ","
(MGRNO,MNAME,JOB)
执行sqlldr命令,并查看结果

--执行sqlldr命令
[oracle@cancer ~]$ sqlldr scott/tiger control=ldr_case8.ctl 
Commit point reached - logical record count 3
Commit point reached - logical record count 6
Commit point reached - logical record count 7--查看结果
SQL> select * from manager;MGRNO MNAME      JOB		   REMARK
---------- ---------- -------------------- ----------10 SMITH      SALES MANAGER11 ALLEN.W    TECH MANAGER16 BLAKE      HR MANAGER12 WARD       SERVICE MANAGER13 TURNER     SELLS DIRECTOR15 JAMES      HR DIRECTOR17 MILLER     PRESIDENT
2.同一个数据文件,导入不同表
控制文件提供了多种逻辑判断方式,只要能把逻辑清晰地描述出来,SQL*Loader就能 按照指定的逻辑执行加载。

数据文件如下:

--数据文件
[oracle@cancer ~]$ cat ldr_case9.dat 
BON  SMITH CLEAK       3904
BON  ALLEN SALER,M     2891
BON  WARD  SALER,"S"   3128
BON  KING  PRESIDENT   2523
MGR  10 SMITH    SALES MANAGER
MGR  11 ALLEN.W  TECH MANAGER
MGR  16 BLAKE    HR MANAGER
TMP  SMITH 7369 CLERK    1020 20
TMP  ALLEN 7499 SALESMAN 1930 30
TMP  WARD  7521 SALESMAN 1580 30
TMP  JONES 7566 MANAGER  3195 20
需求是将MGR开头的记录导入到Manager表,以BON开头的记录导入到BONUS表,其他记录存放到废弃文件中,创建控制文件如下:

--控制文件
[oracle@cancer ~]$ cat ldr_case9.ctl
LOAD DATA
INFILE ldr_case9.dat
DISCARDFILE ldr_case9.dsc
TRUNCATE 
INTO TABLE BONUS
WHEN TAB='BON'
(
TAB FILLER POSITION(1:3),
ENAME POSITION(6:10),
JOB POSITION(*+1:20),
SAL POSITION(*+3:27)
)
INTO TABLE MANAGER
WHEN TAB='MGR'
(
TAB FILLER POSITION(1:3),
MGRNO POSITION(6:7),
MNAME POSITION(9:15),
JOB POSITION(*+2:30)
)
虽然这个控制文件看起来比之前的都要复杂,但只有一个新语法,即关键字,我们这里通过WHEN来实现判断,很容易理解。同时,指定了DISCARDFILE参数,以生成不满足加载条件的废弃文件,如果你有心,不妨等执行完sqlldr命令后査看ldr_case9.dsc文件和ldr_case9.log文件。
另外注意,控制文件中WHEN逻辑判断不支持OR关键字,因此如果你的判断条件有多个,则只能通过AND连接,而不能直接使用OR。
执行sqlldr命令,并查看结果

--执行sqlldr命令
[oracle@cancer ~]$ sqlldr scott/tiger contro

这篇关于SQL*Loader的使用总结(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035363

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代