SQL*Loader学习笔记-数据文件记录格式

SQL*Loader是Oracle提供的用于将外部文件中的数据加载到数据库表中的工具。使用SQL*Loader可以完成:
  1. 远程load数据
  2. 从多个文件中load数据
  3. 将数据load到多个表中
  4. 指定数据的字符集
  5. 选择性的load的数据
  6. load数据前先处理数据
  7. 在某一列生成唯一的序列值
  8. 可以使用传统路径(通过SQL)或直接路径(直接操纵数据块)load数据,前者较为灵活,后者性能更好
SQL*Loader的执行流程如下图:
bb
SQL*Loader的两个输入参数是一个控制文件和若干数据文件。SQL*Loader无法处理的记录会输出到bad files,不符合条件的记录输出到discard files。

使用sqlldr [参数列表]命令执行SQL*Loader会话。sqlldr的参数既可以写在 命令行中,还可以集中写在 参数文件中,并通过parfile参数指定参数文件,也可以在控制文件的 options子句中说明。
其中命令行中的参数具有最高优先级,即会覆盖其他位置的参数。
  • SQL*Loader的数据文件
SQL*Loader有三种格式的数据文件,可以通过控制文件中的infile参数指定数据文件的格式。

Fixed Record Format:
数据文件中的所有记录具有相同的长度(bytes),
指定数据文件为固定长度记录格式:INFILE datafile_name "fix n"其中n就是数据文件中一条记录的长度。
load data
infile 'example.dat'  "fix 11"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1, col2)

example.dat:
001,   cd, 0002,fghi,
00003,lmn,
1, "pqrs",
0005,uvwx,
示例数据文件包含5条记录,分别是[001,...cd,.] ,[0002,fghi,\n],[00003,lmn,\n],[1,."pqrs",\n],[0005,uvwx,\n]

Variable Record Format:
数据文件中的记录长度不固定,由每条记录的前n个字节指定该记录的长度。
指定数据文件为可变长度记录格式:INFILE "datafile_name" "var n" 其中n指定每条记录的前n个字节表示该记录的长度。
n默认为5,指定n>40时会报错。
load data
infile 'example.dat'  "var 3"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
 col2 char(7))

example.dat:
009hello,cd,010world,im,
012my,name is,

Stream Record Format:
流记录格式不指定每条记录的长度,也是SQL*Loader的默认格式,灵活性最高。SQL*Loader通过终结符判断记录是否结束。
指定数据文件为流记录格式:INFILE datafile_name ["str terminator_string"],terminator_string即是终结符。
terminator_string有两种格式:字符格式和十六进制格式,字符格式需要使用单引号或双引号,十六进制适用于那些不可打印的字符,下属字符除外:
\n 换行符
\f  换页符
\r  回车符
\t  水平制表符
\v  垂直制表符
如果NLS_LANG参数指定的字符集与数据文件使用的字符集不一致,SQL*Loader在检查终结符之前,会先把字符集转化为数据文件的字符集。如果采用十六进制则不用转换。
load data
infile 'example.dat'  "str '|\n'"
into table example
fields terminated by ',' optionally enclosed by '"'
(col1 char(5),
 col2 char(7))

example.dat:
hello,world,|
james,bond,|


fj.pngsut81088.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25791987/viewspace-719860/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25791987/viewspace-719860/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值