Oracle   SQL   Loader的详细语法

SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据
仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使
您快速掌握SQL*LOADER的使用方法。
     首先,我们认识一下SQL*LOADER。
     在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。
     如执行:d:\oracle> sqlldr
SQL*Loader:   Release   8.1.6.0.0   -   Production   on   星期二   1月   8   11:06:42   2002
(c)   Copyright   1999   Oracle   Corporation.   All   rights   reserved.
用法:   SQLLOAD   关键字   =   值   [,keyword=value,...]
有效的关键字:
userid   --   ORACLE   username/password
control   --   Control   file   name
log   --   Log   file   name
bad   --   Bad   file   name
data   --   Data   file   name
discard   --   Discard   file   name
discardmax   --   Number   of   discards   to   allow   (全部默认)
skip   --   Number   of   logical   records   to   skip   (默认0)
load   --   Number   of   logical   records   to   load   (全部默认)
errors   --   Number   of   errors   to   allow   (默认50)
rows   --   Number   of   rows   in   conventional   path   bind   array   or   between   direct   p
ath   data   saves
(默认:   常规路径   64,   所有直接路径)
bindsize   --   Size   of   conventional   path   bind   array   in   bytes(默认65536)
silent   --   Suppress   messages   during   run   (header,feedback,errors,discards,part
itions)
direct   --   use   direct   path   (默认FALSE)
parfile   --   parameter   file:   name   of   file   that   contains   parameter   specification
s
parallel   --   do   parallel   load   (默认FALSE)
file   --   File   to   allocate   extents   from
skip_unusable_indexes   --   disallow/allow   unusable   indexes   or   index   partitions(默
认FALSE)
skip_index_maintenance   --   do   not   maintain   indexes,   mark   affected   indexes   as   unus
able(默认FALSE)
commit_discontinued   --   commit   loaded   rows   when   load   is   discontinued(默认FALSE)
readsize   --   Size   of   Read   buffer   (默认1048576)
PLEASE   NOTE:   命令行参数可以由位置或关键字指定
。前者的例子是   'sqlload
scott/tiger   foo ';后者的例子是   'sqlload   control=foo
userid=scott/tiger '.位置指定参数的时间必须早于
但不可迟于由关键字指定的参数。例如,
'SQLLOAD   SCott/tiger   control=foo   logfile=log ',   但
'不允许   sqlload   scott/tiger   control=foo   log ',即使允许
参数   'log '   的位置正确。
d:\oracle>
我们可以从中看到一些基本的帮助信息,这里,我用到的是中文的WIN2000 ADV SERVER。
     我们知道,SQL*LOADER只能导入纯文本,所以我们现在开始以实例来讲解其用法。
     一、已存在数据源result.csv,欲倒入ORACLE中FANCY用户下。
       result.csv内容:
     1,默认   Web   站点,192.168.2.254:80:,RUNNING
     2,other,192.168.2.254:80:test.com,STOPPED
     3,third,192.168.2.254:81:thirdabc.com,RUNNING
     从中,我们看出4列,分别以逗号分隔,为变长字符串。
     二、制定控制文件result.ctl
result.ctl内容:
load   data
infile   'result.csv '
into   table   resultxt  
(resultid   char   terminated   by   ', ',
website   char   terminated   by   ', ',
ipport   char   terminated   by   ', ',
status   char   terminated   by   whitespace)
     说明:
     infile 指数据源文件 这里我们省略了默认的 discardfile   result.dsc   badfile   result.bad
     into   table   resultxt   默认是INSERT,也可以into   table   resultxt   APPEND为追加方式,或REPLACE
     terminated   by   ', ' 指用逗号分隔
     terminated   by   whitespace 结尾以空白分隔
     三、此时我们执行加载:
D:\> sqlldr   userid=fancy/testpass   control=result.ctl   log=resulthis.out
SQL*Loader:   Release   8.1.6.0.0   -   Production   on   星期二   1月   8   10:25:42   2002
(c)   Copyright   1999   Oracle   Corporation.   All   rights   reserved.
SQL*Loader-941:   在描述表RESULTXT时出现错误
ORA-04043:   对象   RESULTXT   不存在
     提示出错,因为数据库没有对应的表。
     四、在数据库建立表
    create   table   resultxt
(resultid   varchar2(500),
website   varchar2(500),
ipport   varchar2(500),
status   varchar2(500))
/
     五、重新执行加载
     D:\> sqlldr   userid=fancy/k1i7l6l8   control=result.ctl   log=resulthis.out
SQL*Loader:   Release   8.1.6.0.0   -   Production   on   星期二   1月   8   10:31:57   2002
(c)   Copyright   1999   Oracle   Corporation.   All   rights   reserved.
达到提交点,逻辑记录计数2
达到提交点,逻辑记录计数3
     已经成功!我们可以通过日志文件来分析其过程:resulthis.out内容如下:
SQL*Loader:   Release   8.1.6.0.0   -   Production   on   星期二   1月   8   10:31:57   2002
(c)   Copyright   1999   Oracle   Corporation.   All   rights   reserved.
控制文件:   result.ctl
数据文件:   result.csv
错误文件:   result.bad
废弃文件:   未作指定
:  
(可废弃所有记录)
装载数:   ALL
跳过数:   0
允许的错误:   50
绑定数组:   64   行,最大   65536   字节
继续:   未作指定
所用路径:   常规
表RESULTXT
已载入从每个逻辑记录
插入选项对此表INSERT生效
列名   位置   长度   中止   包装数据类型
------------------------------   ----------   -----   ----   ----   ---------------------
RESULTID   FIRST   *   ,   CHARACTER  
WEBSITE   NEXT   *   ,   CHARACTER  
IPPORT   NEXT   *   ,   CHARACTER  
STATUS   NEXT   *   WHT   CHARACTER  
表RESULTXT:  
3   行载入成功
由于数据错误,   0   行没有载入。
由于所有   WHEN   子句失败,   0   行没有载入。
由于所有字段都为空的,   0   行没有载入。
为结合数组分配的空间:   65016字节(63行)
除绑定数组外的内存空间分配:   0字节
跳过的逻辑记录总数:   0
读取的逻辑记录总数:   3
拒绝的逻辑记录总数:   0
废弃的逻辑记录总数:   0
从星期二   1月   08   10:31:57   2002开始运行
在星期二   1月   08   10:32:00   2002处运行结束
经过时间为:   00:   00:   02.70
CPU   时间为:   00:   00:   00.10(可
     六、并发操作
     sqlldr   userid=/   control=result1.ctl   direct=true   parallel=true
sqlldr   userid=/   control=result2.ctl   direct=true   parallel=true
sqlldr   userid=/   control=result2.ctl   direct=true   parallel=true
当加载大量数据时(大约超过10GB),最好抑制日志的产生:
     SQL> ALTER   TABLE   RESULTXT   nologging;
这样不产生REDO LOG,可以提高效率。然后在CONTROL文件中load   data上面加一行:unrecoverable  
此选项必须要与DIRECT共同应用。
     在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实,估计能到1-10G就算不错了,开始可用结构
相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。

有关SQLLDR的问题  
控制文件:input.ctl,内容如下:  
     load   data             --1、控制文件标识  
     infile   'test.txt '         --2、要输入的数据文件名为test.txt  
     append   into   table   test    --3、向表test中追加记录  
     fields   terminated   by   X '09 '  --4、字段终止于X '09 ',是一个制表符(TAB)  
     (id,username,password,sj)     -----定义列对应顺序

其中append为数据装载方式,还有其他选项:  
a、insert,为缺省方式,在数据装载开始时要求表为空  
b、append,在表中追加新记录  
c、replace,删除旧记录,替换成新装载的记录  
d、truncate,同上

Oracle SQL Loader的详细语法相关推荐

  1. Oracle SQL Loader的详细语法

    转载 http://www.cnblogs.com/binking/archive/2006/11/21/567587.html Oracle   SQL   Loader的详细语法   SQL*LO ...

  2. [Oracle] SQL*Loader 详细使用教程(3)- 控制文件

    控制文件是SQL*Loader里最重要的文件,它是一个文本文件,用来定义数据文件的位置.数据的格式.以及配置数据加载过程的行为,在sqlldr中以control参数指定控制文件.   在控制文件里配置 ...

  3. Oracle SQL Loader数据导入

    1.SQL LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中.SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,P ...

  4. 学习Oracle SQL loader 的使用

    sql loader使用例子 a)SQLLoader将 Excel 数据导出到 Oracle 1.创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑: 控制文件:input.c ...

  5. oracle中loder,Oracle Sql Loader的学习使用

    最近由于遇到oracle控制文件的使用,虽然不是很复杂,但是从来没有用过,专门花点时间看看.点击 1,概述: Sql Loader: 一个批量工具,将文件数据导入到数据库.可以导入一个表或者多个表,甚 ...

  6. oracle sqlload速度加快,oracle,sql loader 及 快速生成大量数据 CSV文件sqlldr

    要测试sql loader 以及快速产生大量测试数据 生成大量测试数据思路. 一,用plsql developer 生成csv 文件 二,用>>输出重定向,追加到一个cvs 文件里. 三, ...

  7. oracle之数据同步:Oracle Sql Loader使用说明(大批量快速插入数据库记录)

    1.准备表数据 select * from emp10;create sequence seq_eseq increment by 1 start with 1001 maxvalue 9999999 ...

  8. Oracle SQL Loader切身实例

    1.建立可执行文件:input.bat 内容为:sqlldr userid= dsa_test/dsa_test@dsa_test bindsize=5120000  readsize=9999999 ...

  9. SQL*Loader 详解

    在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法: 1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中 2. 建立数据库间 ...

最新文章

  1. 一场由金山词霸引起的车祸 Process finished with exit code -1073741819 (0xC0000005)
  2. 线性表的链式表示——双链表
  3. mysql4中出现的本地计算机 无法启动mysql服务 错误1067解决办法
  4. c语言hailstone序列,第一章 c语言上机试卷.doc
  5. 特征工程中的IV和WOE详解
  6. Gradient Boosted Decision Trees详解
  7. 基于Hadoop的产品大数据分布式存储优化
  8. QueryPath, php上的jQuery
  9. 如何寻找灵感?让那些小众但富有创意的页面告诉你
  10. SHELL脚本-猜数字游戏
  11. python request microsoft graph_Microsoft Graph API:授权未找到
  12. java实现验证码生成工具类
  13. 公开的Webservice集锦
  14. Linux系统安装sudo
  15. 最近选购MP3而有感便携追求音质的一些心得
  16. 炸了炸了~翻译器中的王者,科大讯飞翻译器2.0横空出世!| 钛空智慧星球推荐...
  17. DoS攻击之Syn洪泛攻击原理及防御
  18. 【算法导论-36】并查集(Disjoint Set)具体解释
  19. 用Java解决牛客网小米校招编程真题XM5句子反转
  20. JavaScript 使用js修改页面元素

热门文章

  1. 嵌入式linux 考试大纲,《嵌入式Linux》课程考试大纲-武汉工程大学学生进
  2. linux c 文件键盘写入,linux - C非阻塞键盘输入
  3. 教程:14、系统性能分析
  4. 网络服务-VSFTP
  5. 编写c语言程序 斐波那契,C语言程序实现斐波那契数列的解题思路???
  6. c语言逆序输出字符串指针,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
  7. mysql主流产品介绍论文_MySQL数据库产品介绍
  8. python中元组的使用_Python当中tuple元组的使用
  9. android 魅族扫码,魅族Flyme8扫码快传太实用,轻松实现文件高速传输
  10. 鸿蒙计划什么时候开始,华为鸿蒙计划被曝!研究者是2020应届生,网友:初出茅庐凭啥...