SQL*LOADER操作篇

来源:互联网 发布:淘宝汽车装饰用品 编辑:程序博客网 时间:2024/06/13 21:35

Oracle SQL  Loader的详细语法   
   SQL*LOADER
ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECTPARALLEL)。 NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload 


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

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

        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运算,文档中没提这事。


0 0
原创粉丝点击