欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL*LOADER操作篇

程序员文章站 2022-05-07 12:10:43
...
本篇介绍sqlldr使用过程中,比较常用的4中需求(个人认为),SQL*LOADER的原理和一些关键字的含义就不在絮叨,很多人在说这事,顺便鄙视一下那些在网上粘贴别人文章,不注明出处的人,比较气愤,今天在网上查资料的时候,所有人都一样,找不到原版,还注明原创,MD......这么多人的文章都一字不差,真是有缘!

           需求一、单数据文件导入一张数据表中

        文字是苍白的,事例才是震撼的,所以举例说明:

        1、创建测试表:

             create table test_loader_1(id number(4),name varchar2(20));

        2、创建一个bat文件(在windows下可以直接调用命令行的)

             sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true   --特别注意,一个sqlldr只能写一个控制文件


        3、创建一个控制文件.ctl文件

             LOAD DATA
             INFILE 'D:\sqlloader\test1.txt'
              APPEND INTO TABLE test_loader_1
              FIELDS TERMINATED BY X'09'           --(Tab分隔符)
              TRAILING NULLCOLS --(表的字段没有对应的值时允许为空)
             (ID,NAME) 


           4、创建数据文件test1.txt,内容为

                 1             a

                 2             b

           准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到有两条数据。


        需求二、多数据文件导入一张数据表中

        1、创建测试表:

             create table test_loader_1(id number(4),name varchar2(20));

        2、创建一个bat文件(在windows下可以直接调用命令行的)

             sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true

        3、创建一个控制文件.ctl文件

             LOAD DATA
             INFILE 'D:\sqlloader\test1.txt'
              INFILE 'D:\sqlloader\test2.txt'   


             APPEND INTO TABLE test_loader_1
              FIELDS TERMINATED BY X'09'           --(Tab分隔符)
              TRAILING NULLCOLS
             (ID,NAME) 


        4、创建数据文件test1.txt和test2.txt,内容为

             test1.txt


             1             a

             2             b



             test2.txt


             3            c

             4            d
         准备工作已经结束,直接点击bat,之后查询test_loader_1表,就会看到数据在里面了。

        需求三、单数据文件导入多张数据表中

        1、创建测试表:

             create table test_loader_1(id number(4),name varchar2(20));

             create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));


        2、创建一个bat文件(在windows下可以直接调用命令行的)

             sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true

        3、创建一个控制文件.ctl文件        
             LOAD DATA
             INFILE 'D:\sqlloader\test1.txt'
              APPEND INTO TABLE test_loader_1
             WHEN TAB='ABC'
             FIELDS TERMINATED BY X'09'
             TRAILING NULLCOLS
             (TAB FILLER POSITION(1:3),ID,NAME) 
             INTO TABLE test_loader_2
             WHEN TAB='CBA'
            FIELDS TERMINATED BY X'09'
            TRAILING NULLCOLS
            (TAB FILLER POSITION(1:4), 
             ID, 
             NAME,
             PASSWORD
             ) 

        4、创建数据文件test1.txt内容为

             test1.txt


             ABC1             a

             ABC2             b

             CBA3             c

             CBA4             d




        准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。


        需求四、多数据文件导入多张数据表中


          1、创建测试表:

             create table test_loader_1(id number(4),name varchar2(20));

             create table test_loader_2(id number(4),name varchar2(20),password varchar2(20));


        2、创建一个bat文件(在windows下可以直接调用命令行的)

             sqlldr userid=scott/ruiyuan control=D:\sqlloader\user.ctl parallel=true

        3、创建一个控制文件.ctl文件        
             LOAD DATA
             INFILE 'D:\sqlloader\test1.txt'
             INFILE 'D:\sqlloader\test2.txt'

             APPEND INTO TABLE test_loader_1
             WHEN TAB='ABC'
             FIELDS TERMINATED BY X'09'
             TRAILING NULLCOLS
             (TAB FILLER POSITION(1:3),ID,NAME) 
             INTO TABLE test_loader_2
             WHEN TAB='CBA'
            FIELDS TERMINATED BY X'09'
            TRAILING NULLCOLS
            (TAB FILLER POSITION(1:4), 
             ID, 
             NAME,
             PASSWORD
             ) 


        4、创建数据文件test1.txt内容为

             test1.txt


             ABC1             a

             ABC2             b

             CBA3             c

             CBA4             d

             test2.txt


             ABC1             a

             ABC2             b

             CBA3             c

             CBA4             d




      准备工作已经结束,直接点击bat,之后查询test_loader_1和test_loader_2表,就会看到数据在里面了。

        目前没有解决的问题就是在第四种情况下,能精确指定每个表对应的数据文件是哪个,这样的话不用 WHEN 


     TAB='CBA' 进行字符串匹配,很节约CPU运算,文档中没提这事。

     希望有此经历的大牛赐教!

  
http://blog.csdn.net/cupid1102/article/details/7357510
相关标签: sql loader