zoukankan      html  css  js  c++  java
  • [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':十六进制的字节字符串。
    默认的分隔符为换行符' ',即每行为一个记录。
     
  • 相关阅读:
    接口测试常见bug
    软件测试面试题含答案
    每个测试都该知道的测试用例方法及细节设计
    从“如何测试一个杯子”理解功能、界面、性能、安全测试?
    小白必看:测试人有必要参考的软件测试工作规范
    经验分享:给软件测试人员15个最好的测试管理工具
    DFS路径规划
    Trian(列车调度)
    GAIA
    CSWS_E_ROB深度估计方法
  • 原文地址:https://www.cnblogs.com/zfswff/p/5720415.html
Copyright © 2011-2022 走看看