• [Oracle] SQL*Loader 详细使用教程(1)- 总览


    SQL*Loader原理

     

    SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高。其示意图如下:

    控制文件(Control File) (.ctl):用于控制数据导入的行为方式的文件(最重要的文件)

    参数文件(可选)(Parameter File) (.par):可以把参数直接写在控制文件里,也可以单独写一个参数文件

    数据文件(Data Files) :放置源数据的平面文件(可以一次性导入多个数据文件)

    坏文件(Bad File) (.bad):在数据加载时,把无法正确加载的数据放入错误文件中(比如数据格式、数据类型问题等)

    丢弃文件(可选)(Discard File) (.dsc):有些数据,虽然数据格式、数据类型没有问题,但它被逻辑条件过滤掉了(由控制文件WHEN设置),会被放入丢失文件

    日志文件(Log File) (.log):记录SQL*Loader的数据加载过程

    SQL*Loader的数据加载方式

     
    SQL*Loader支持3种数据加载方式,分别是:
    • 传统路径加载(direct=false):等同于insert语句
    • 直接路径加载(direct=true):绕过SGA,把数据直接导入高水位线(HWM)以上,可设置并行加载,性能比传统路径加载更高,但限制也更多
    • 外部表加载(较少用):先为数据文件上创建一个外部表,然后再把数据从外部表insert到目标表中
     

    数据文件的记录格式

     
    从SQL*Loader的角度来看,数据文件里的数据是以记录组织的,分为以下三种记录格式(由控制文件的INFILE参数设置):
     
    定长记录格式
    这种方式灵活性最差,但性能却最好,它的语法如下:
    INFILE datafile_name "fix n"
    表示数据文件里的每个记录定长为n个字节。
     
    变长记录格式
    INFILE "datafile_name" "var n"
    变长记录分为两个部分:记录长度和记录本身,看下面这个例子:
    load data
    infile 'example.dat'  "var 3"
    into table example
    fields terminated by ',' optionally enclosed by '"'
    (col1 char(5),
     col2 char(7))
    
    example.dat:
    009hello,cd,010world,im,
    012my,name is,
    var 3 表示记录长度为3个字节,紧跟其后的就是记录本身,上例中,第一个记录长度为9个字节(009),值为其后的9个字节(hello,cd,);第二个记录长度为10个字节(010),值为其后的10个字节(world,im, ), 表示第一行行尾的换行符;以此类推。
     
    流记录格式
    这是最常用也是默认的记录格式,记录以分隔符分开,其语法如下:
    INFILE datafile_name ["str terminator_string"]
    分隔符分为两种:
    1. 'char_string':用单引号或双引号扩起来的字符串
    2.X'hex_string':十六进制的字节字符串。
    默认的分隔符为换行符' ',即每行为一个记录。
     
  • 相关阅读:
    docker+headless+robotframework+jenkins实现web自动化持续集成
    dokcer入门
    dockerfile详解
    全网最全Docker命令详解
    ql的python学习之路-day14
    ql的python学习之路-day13
    ql的python学习之路-day12
    关于python中第三方库安装方法和问题解决
    微信小程序之组件常见的问题
    微信小程序常用代码(1)——tab切换
  • 原文地址:https://www.cnblogs.com/zfswff/p/5720415.html
Copyright © 2020-2023  润新知