sqlldr使用

查看帮助:sqlldr help=y

sqlldr userid=test/test control='a.ctl'

OPTIONS ( ROWS=100000)
LOAD DATA
INFILE 'a.dat'
BADFILE 'a.bad'
INTO TABLE z
Append
FIELDS TERMINATED BY X'9'
TRAILING NULLCOLS
  (a ,
   b ,
   c  DATE "yyyymmdd")

控制文件如上
其他的使用参数 运行sqlldr命令时会自动提示

LOAD DATA
INFILE 't.dat'              要导入的文件
// INFILE 'tt.date' 导入多个文件
// INFILE *               表示要导入的内容就在control文件里 下面的BEGINDATA后面就是导入的内容
 
INTO TABLE table_name    指定装入的表
BADFILE 'c:\bad.txt'    可选,指定坏文件地址,缺省在当前目录下生成与原文件名一致的.bad文件
 
************* 以下是4种装入表的方式
APPEND             原先的表有数据 就加在后面
INSERT             装载空表 如果原先的表有数据 sqlloader会停止 默认值
REPLACE           原先的表有数据 原先的数据会全部删除
TRUNCATE        指定的内容和replace的相同 会用truncate语句删除现存数据
 
************* 指定分隔符
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
// TERMINATED BY WRITESPACE 以空白分割
 
TRAILING NULLCOLS            表的字段没有对应的值时允许为空
 
************* 下面是表的字段
(
col_1 , col_2 ,col_filler FILLER // FILLER 关键字 此列的数值不会被装载
// 如: lg,lg,not 结果 lg lg
)
如果没声明FIELDS TERMINATED BY ',' 时,可以用下面两种方式实现同样功能:
1.为每一列指定分隔符
 (
 col_1 [interger external] TERMINATED BY ',' ,
 col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
 col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
 )
2.用位置告诉字段装载数据
 (
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) // 指定字段的类型
 )

posted on 2008-03-01 01:40  一江水  阅读(606)  评论(0编辑  收藏  举报