SQLLoader工具的使用

来源:互联网 发布:股市公式怎么编程 编辑:程序博客网 时间:2024/04/30 00:55
 

实习十 SQLLoader工具的使用

实验目的:学习通过SQLLoader工具把外部数据导入到ORACLE数据库中。

一、SQL*LOADER涉及的文件

        数据文件Data File:数据源[文本文件]

        控制文件Control File:导入数据规则

        日志文件Log File:导入数据记录

        坏文件Bad File:插入记录出错,如违反唯一约束,非空约束...

        卡片文件Discard File:没有被选择的记录

二、装载方式:直接路径和常规路径的区别

        直接路径:根据控制文件转换数据为指定的数组,格式化为ORACLE数据块,将数据块直接写入数据库。

        并行直接路径:多个实例直接路径装入数据。

        常规路径:根据控制文件转换数据为指定的数组。使用insert语句执行数组插入。

三、常规路径装入(缺省方式)

        使用INSERT语句和使用数组缓冲插入数据到数据库表中。这种方法被所有的ORACLE工具和应用程序使用。使用常规路径装入数据,和所有其它进程争夺缓冲资源。由于创建SQL语句、执行SQL语句,使得装入显著变慢。如果速度对你特别重要,应该使用直接路径装入。但下面情况无法直接装入,必须用常规路径装入:

    1、装入时同时访问被索引的表或者同时插入、更新没被索引

的表。因为直接路径装入(除并行装载),SQL*LOADER对表必须有排它的写访问和对索引有排它的读写访问。

    2、通过SQL*NET访问不同的平台。不能用直接路径装入,除非使用相同的计算机和字符集。

    3、装入数据到聚族表中。直接路径装载不支持聚族表。

    4、当装相对少的记录到有索引的大表中。在直接路径装载下

需要拷贝索引,然后和合并新的索引。

    5、当装相对少的行到一个有参考和列检查完整性约束。在直

接路径装载下,约束被禁用。

    6、想应用SQL函数到指定的字段中。

四、直接路径装入

何时使用直接路径装入:

1、大量数据需要快速装入。

2、想使用并行装入。

3、当前会话不支持你要装入数据的字符集,或者字符集转换 将出现错误。 

五、使用SQLLoader导入数据

   例:

方法一:

1、编辑一个文件load.ctl(假设存放在d:\oracle\doc下):

load data

infile *

(append)into table department

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

(dept_id,department,abbreviation)

begindata

     1, 农学院, 农学

     2, 园艺系, 园艺

     3, 林学院, 林学

     4, 草业科学系, 草业

     5, 动物科学系, 动科

     6, 动物医学学院, 动医

     7, 机械交通学院, 机交

     8, 水利与土木工程学院, 水利

     9, 经济贸易学院, 经贸

     10, 食品科学系, 食科

     11, 计算机及信息工程系, 计算机

     12, 环境系, 环境

     13, 外语系, 外语

     14, 人文社会科学学院, 人文

     15, 高职学院, 高职

     16, 语言部, 语言部

 

    2、导入数据:

c:\sqlldr userid=user1/user1@ora1  control=d:\oracle\doc\load.ctl   log=d:\oracle\doc\load.log

 

方法二:

1、编辑一个数据文件load.dat(假设存放在d:\oracle\doc下),

其中存放的是要导入的数据:

     1, 农学院, 农学

     2, 园艺系, 园艺

     3, 林学院, 林学

     4, 草业科学系, 草业

     5, 动物科学系, 动科

     6, 动物医学学院, 动医

     7, 机械交通学院, 机交

     8, 水利与土木工程学院, 水利

     9, 经济贸易学院, 经贸

     10, 食品科学系, 食科

     11, 计算机及信息工程系, 计算机

     12, 环境系, 环境

     13, 外语系, 外语

     14, 人文社会科学学院, 人文

     15, 高职学院, 高职

16, 语言部, 语言部   

 

2、编辑一个文件load1.ctl(假设存放在d:\oracle\doc下):

load data

infile 'd:\oracle\doc\load.dat'

into table department

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

(dept_id,department,abbreviation)

 

3、导入数据:

   c:\sqlldr userid=user1/user1@ora1 control=d:\

oracle\doc\load1.ctl  log=d:\oracle\doc\load1.log

 

 

注意:如果表中已有数据,则在控制文件当中使用append into table department语句导入数据。

原创粉丝点击