打印本文 打印本文 关闭窗口 关闭窗口
oracle使用杂记2
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3146  更新时间:2009/4/22 23:22:07  文章录入:mintao  责任编辑:mintao

 

下面的是关于sql*loader 的使用的一点总结 有些是来自itpub上的一些网友的总结

大部分是oracle专家高级编程上的实例 只是我实践以后写的结果

 

               sqlldr userid=lgone/tiger control=a.ctl


LOAD DATA
   INFILE 't.dat'       // 要导入的文件
   // INFILE 'tt.dat'  // 导入多个文件
   // INFILE *          // 要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容

   INTO TABLE table_name    // 指定装入的表
   // into table t_name partition (p_1)  分区的载入

   BADFILE 'c:\bad.txt'     // 指定坏文件地址

          *************   以下是4种装入表的方式
   APPEND               // 原先的表有数据 就加在后面
   // INSERT            // 装载空表 如果原先的表有数据 sqlloader会停止   默认值
   // REPLACE           // 原先的表有数据 原先的数据会全部删除
   // TRUNCATE          // 指定的内容和replace的相同 会用truncate语句删除现存数据

   SKIP 5    可以用 "SKIP n" 关键字来指定导入时可以跳过多少行数据

          *************  指定的TERMINATED可以在表的开头 也可在表的内部字段部分
   FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
                        // 装载这种数据: 10,lg,"""lg""","lg,lg" 
   // 在表中结果: 10    lg    "lg"   lg,lg
   // TERMINATED BY X '09'       // 以十六进制格式 '09' 表示的
   // TERMINATED BY WRITESPACE   // 装载这种数据: 10 lg lg 
        
   TRAILING NULLCOLS    *************   表的字段没有对应的值时允许为空

   *************  下面是表的字段
   (
   col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
                                    // 如: lg,lg,not  结果 lg  lg
   )
                 // 当没声明FIELDS TERMINATED BY ',' 时
   // (
   //   col_1 [interger external] TERMINATED BY ',' ,
   //   col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
   //   col_3 [char]              TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
   // )
                 // 当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据
   // (
   //   col_1 position(1:2),
   //   col_2 position(3:10),
   //   col_3 position(*:16),  // 这个字段的开始位置在前一字段的结束位置
   //   col_4 position(1:16),
   //   col_5 position(3:10) char(8)  // 指定字段的类型
   // )
  
   BEGINDATA    // 对应开始的 INFILE *  要导入的内容就在control文件里
   10,Sql,what
   20,lg,show

=====================================================================================
    ////////////  注意begindata后的数值前面不能有空格

1             ***** 普通装载
   LOAD DATA                                                 
   INFILE *                                                  
   INTO TABLE DEPT                                           
   REPLACE                                                   
   FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'       
   (DEPTNO,
   DNAME,
   LOC
   )                                                         
   BEGINDATA                                                
   10,Sales,"""USA"""
   20,Accounting,"Virginia,USA"
   30,Consulting,Virginia
   40,Finance,Virginia
   50,"Finance","",Virginia    // loc 列将为空
   60,"Finance",,Virginia      // loc 列将为空

2             ***** FIELDS TERMINATED BY WHITESPACE 和  FIELDS TERMINATED BY x'09' 的情况
   LOAD DATA                                                 
   INFILE *                                                  
   INTO TABLE DEPT                                           
   REPLACE                                                   
   FIELDS TERMINATED BY WHITESPACE
   -- FIELDS TERMINATED BY x'09'
   (DEPTNO,
   DNAME,
   LOC
   )                                                         
   BEGINDATA                                                
   10  Sales  Virginia
 
3            ***** 指定不装载那一列   还可用 POSTION(x:y) 来分隔数据
   LOAD DATA
   INFILE *
   INTO TABLE DEPT
   REPLACE
   FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
   ( DEPTNO,
     FILLER_1 FILLER,    // 下面的 "Something Not To Be Loaded" 将不会被装载
     DNAME,
     LOC
   )
   BEGINDATA
   20,Something Not To Be Loaded,Accounting,"Virginia,USA"

4          &

[1] [2] [3] [4] [5]  下一页

打印本文 打印本文 关闭窗口 关闭窗口