• SQL*Loader使用详解(一)


    1、SQL*Loader介绍
    1)SQL*Loader是一个从外部文件指加载数据到Oracle数据库的工具。语法类似于DB2的Load语法,但SQL*Loader支持各种load格式、选择性load和多表load。

    2)SQL*Loader从文本文件导数据到数据库中。功能包括:
    从定界文件装数据
    从固定长度的文本文件装数据
    从二进制文件装数据
    在输入文件中过滤数据

    2、如何使用SQL*Loader工具
    1)sqlldr语法
    sqlldr scott@ORCL/scott control=load_emp.ctl
    sqlldr scott/scott@ORCL control=load_emp.ctl

    scott:数据库用户名;ORCL:数据库SID;scott:数据库密码

    2)控制文件load_emp.ctl格式(按照什么规则load数据,此处只是其中一种方式,后面还会讲到按位置load)
    load data
       infile '/home/oracle/work/load_emp.dat'
       into table load_emp
       fields terminated by "," optionally enclosed by '"'
       (empno,ename,sal,deptno)

    infile:指定数据文件的位置
    into table:指定把数据load到哪个表中
    fields terminated by:指定load数据时,按何种方式分隔字段,此处按","分隔。我们也可以按" "(制表符,即:tab)分隔,X'01'(16进制的字符)分隔。
    optionally enclosed by '"':将数据文件中的数据字段含有的引号“ " ”去掉,如果没有这段话,将会把“ " ”和字符合在一起导入数据库表中。

    3)数据文件load_emp.dat格式
    20001,"Tough HOU",5000,20
    20002,"Xiaolong HOU",9000,30

    4)测试
    a. 创建load_emp表
    [oracle@toughhou ~]$ su oracle
    [oracle@toughhou ~]$ sqlplus /nolog
    SQL> conn / as sysdba
    SQL> startup
    SQL> conn scott/scott
    SQL> set editfile /home/oracle/work/sqledit
    SQL> ed
    create table load_emp(
    empno   number(5),
    ename   varchar2(20),
    sal     number(10),
    deptno  number(2))
    /
    SQL> /

    b. 创建load_emp.ctl
    load data
       infile '/home/oracle/work/load_emp.dat'
       into table load_emp
       fields terminated by "," optionally enclosed by '"'
       (empno,ename,sal,deptno)

    c. 创建load_emp.dat
    20001,"Tough HOU",5000,20
    20002,"Xiaolong HOU",9000,30

    d. 执行sqlldr加载数据
    [oracle@toughhou work]$ sqlldr scott/scott@ORCL control=load_emp.ctl
    Commit point reached - logical record count 2

    //去load_emp表中查看是否加载成功
    SQL> select * from load_emp;
         EMPNO ENAME                    SAL         DEPTNO
    ---------- -------------------- ---------- ----------
         20001 Tough HOU                 5000          20
         20002 Xiaolong HOU           9000          30

    测试成功完成。

    3、控制文件——load行内定长数据
    load data
       infile *
       replace
       into table load_dept
       (  deptno   position(1:5)     char(5),
          dname   position(6:15)    char(10)
       )
    begindata
    50   Tough3   
    60   Tough4   

    行内数据装载,用*作为数据文件(也可像上面例子一样,从数据文件中读入数据),表示数据人begindata部分开始。raplace表示加载前,将删除表中的所有数据。

    create table load_dept(
    deptno  varchar2(5),
    dname  varchar2(10))
    /

    4、sqlldr4种装入表的方式:
    insert:指定要装载的是空表,否则失败
    append:添加数据到表,即使表中有数据
    replace:加载前,将删除表中的所有数据
    truncate:指定的内容和replace的相同 会用truncate语句删除现存数据

    5、SQL*Loader使用的数据类型:
    char:该char和数据库中的char类型不同,它包括数据库中的char、varchar、CLOB等类型
    date:时间类型
    integer external:定义整数值
    decimal external:定义包括小数点的数值

    6、使用SQL*Loader命令和参数
    命令语法为: sqlldr [param=value [,param= valus … ] ]
    参数:
    Userid 用户名和密码
    Control 指定控制文件名,也就是存放前面的胶片中的代码的文件
    Log 指定日志文件名
    Bad 指定存放坏记录的文件名
    Data 指定数据文件名
    Skip 允许跳过的记录数量
    Load 允许装入的记录数量
    Errors 指定允许的错误数
    Rows 指定装载多少条记录提交一次
    Direct 可以指定为直接路径装载
    Parfile 指定包含命令参数的文件名

     

  • 相关阅读:
    python3中Requests将verify设置为False后,取消警告的方式
    unicode编码转换中文_python
    base64编解码_python
    数据结构学习之二叉树
    springboot全能框架学习之旅
    数据结构之树
    经典的猴子分香蕉问题
    求n个数的排列
    三元运算的应用
    将正整数分解成质因数乘积
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778764.html
Copyright © 2020-2023  润新知