你好,游客 登录 注册 搜索
背景:
阅读新闻

SQL*Loader使用方法

[日期:2012-01-18] 来源:Linux社区  作者:robinson_0612 [字体: ]

一、SQL*Loader的体系结构

    SQL*Loader由一个输入控制文件来控制整个装载的相关描述信息,一个或多个数据文件作为原始数据,其详细组成结构包括

        Input Datafiles      -->装载到数据库的原始数据文件

        Loader Control file  -->提供给QL*Loader寻找及翻译数据的相关信息

        Log File             -->装载过程中产生的日志信息

        Bad Files          -->被剔除的一些不合乎规范化的数据,由SQL*Loader剔除,也可能被Oracle剔除

        Discard Files        -->对不满足控制文件中记录选择标准的一些物理记录

        以上五个完整的部分最终将数据导入到数据库,当然,部分组件可以省略。

 

二、控制文件的作用及组成

    控制文件是一个文本文件,控制文件中记录的信息告诉SQL*Loader在哪里寻找数据、如何翻译数据,以及将数据插入到哪里等

    控制文件的组成分为三个部分

        第一部分主要是关于通外部会话的相关信息

            如一些全局选项、行信息、是否跳过特殊记录等

            infile子句指明了从哪里寻找源数据

        第二部分由一个或多个Into table块,每一个块包含一些被导入表的相关信息,如表名,列名等

        第三部分为可选项,如果存在则包含导入的源数据

    控制文件写法的注意事项

        语法结构自由

        不区分大小写

        在行开始处使用--来作为注释行,在控制文件中的第三部分使用--来注释不被支持

        关键字constant zone被保留

 

三、数据文件

    数据文件可以有多个,这些数据文件需要在控制文件中指定

    SQL*Loader角度来看,数据文件中的数据被当做一条条记录

    一个数据文件描述数据文件记录有三种可选的格式

        固定记录格式

        可变记录格式

        流记录格式

    这些记录格式在控制文件使用infile参数时,如果记录的格式未指定,则缺省的为流记录格式。如使用infile *时则为流记录格式

   

    下面给出几种不同记录格式的例子

        a.固定格式:INFILE datafile_name "fix n"

 

            load data

            infile 'example.dat'  "fix 11"   --表明每条记录长度固定为个字节

            into table example

            fields terminated by ',' optionally enclosed by '"'

            (col1, col2)

 

            example.dat:

            001,   cd, 0002,fghi,  --第一条记录为,   cd, 第二条记录为,fghi, 其中第二条记录包含了一个换行符

            00003,lmn,

            1, "pqrs",

            0005,uvwx,

           

        b.可变格式:INFILE "datafile_name" "var n"

            load data

            infile 'example.dat'  "var 3"    --使用3位来描述一条记录的长度

            into table example

            fields terminated by ',' optionally enclosed by '"'

            (col1 char(5),

             col2 char(7))

 

            example.dat:

            009hello,cd,010world,im,  --009 表明第一条记录的长度为个9字节,表明第二条记录的长度为10个字节等

            012my,name is,

 

       

        c.流记录格式:INFILE datafile_name ["str terminator_string"] 

            load data

            infile 'example.dat'  "str '|/n'"   --使用| 或换行符来作为一条记录的终止

            into table example

            fields terminated by ',' optionally enclosed by '"'

            (col1 char(5),

             col2 char(7))

 

            example.dat:

            hello,world,|

            james,bond,|

   

    逻辑记录的概念

        通常情况下,数据文件中的一条物理记录即是一条逻辑记录,即数据文件的一条记录对应于数据库的一条记录SQL*Loader扩展了该功能可以将多条物理记录形成一条逻辑记录,而由这个组合再来生成一条数据库中的记录

        SQL*Loader支持两种策略来形成逻辑记录

            组合固定条数的物理记录来形成逻辑记录

            将满足特定条件的物理记录组合并形成逻辑记录

linux
相关资讯       Oracle基础教程 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款