ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL*Loader学习笔记-数据文件记录格式

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

原创 Linux操作系统 作者:Jack_Miller 时间:2012-03-29 17:22:04 0 删除 编辑
SQL*Loader是Oracle提供的用于将外部文件中的数据加载到数据库表中的工具。使用SQL*Loader可以完成:
  1. 远程load数据
  2. 从多个文件中load数据
  3. 将数据load到多个表中
  4. 指定数据的字符集
  5. 选择性的load的数据
  6. load数据前先处理数据
  7. 在某一列生成唯一的序列值
  8. 可以使用传统路径(通过SQL)或直接路径(直接操纵数据块)load数据,前者较为灵活,后者性能更好
SQL*Loader的执行流程如下图:
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,|


sut81088.gif

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

请登录后发表评论 登录
全部评论

注册时间:2011-12-09

  • 博文量
    25
  • 访问量
    70217