`

Oracle SQL Loader的详细语法

 
阅读更多
SQL*LOADERORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据
仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECTPARALLEL)。现在,我们抛开其理论不谈,用实例来使您快速掌握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 path data saves
(默认: 常规路径 64, 所有直接路径)
bindsize -- Size of conventional path bind array in bytes(
默认65536)
silent -- Suppress messages during run (header,feedback,errors,discards,partitions)
direct -- use direct path (
默认FALSE)
parfile -- parameter file: name of file that contains parameter specifications
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 unusable(
默认FALSE)
commit_discontinued -- commit loaded rows when load is discontinued(
默认FALSE)
readsize -- Size of Read buffer (
默认1048576)
PLEASE NOTE:
命令行参数可以由位置或关键字指定
。前者的例子是 'sqlloadscott/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,欲倒入ORACLEFANCY用户下。
     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数据的能力!其实,估计能到110G就算不错了,开始可用结构相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。
有关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,同上

来源:http://www.cnblogs.com/binking
分享到:
评论

相关推荐

    关于 Oracle 的数据导入导出及 Sql Loader (sqlldr)

    NULL 博文链接:https://jxdwuao.iteye.com/blog/1704642

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,...

    oracle database 10g 完整参考手册part1

    第5章 SQL中的基本语法 第6章 基本的SQL*Plus报表及命令 第7章 文本信息的收集与修改 第8章 正则表达式搜索 第9章 数值处理 第10章 日期:过去、现在及日期的差 第11章 转换函数与变换函数 第12章 分组函数 第13章 ...

    oracle database 11g 高清完整中文版part2

     第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理  第10章 日期:过去、现在及日期的差  第11章 转换函数与变换函数  第12章...

    oracle database 11g 完整参考手册中文高清完整版part3

     第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理  第10章 日期:过去、现在及日期的差  第11章 转换函数与变换函数  第12章...

    Oracle_Database_11g完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    oracle database 11g完全参考手册 高清完整版part1 共3部分

     第5章 sql 中的基本语法  第6章 基本的sql*plus 报表和命令  第7章 文本信息的收集与更改  第8章 正则表达式搜索  第9章 数值处理  第10章 日期:过去、现在及日期的差  第11章 转换函数与变换函数  第12章...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此为第002部分 基本...

    Oracle数据库装载外部数据工具SQL*Loader的应用 (2008年)

    0racle数据库管理系统的SQL*Loade r工具提供了将外部...文中阐述了SQL*Loader完成的主要功能、工作机制及组件,对控制文件的语法结构及常用参数进行了较详细的论述,最后通过一个实饲说明了装载数据的操作过程及方法。

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053) 共2部分:此...

    超详细Oracle教程

    100 第二十四章 备份 恢复 SQLLoader .................................................................................... 104 第二十五章 数据库设计范式.....................................................

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    15.1 SQL*Loader 655 15.1.1 用SQLLDR加载数据的FAQ 660 15.1.2 SQLLDR警告 686 15.1.3 SQLLDR小结 686 15.2 外部表 687 15.2.1 建立外部表 688 15.2.2 处理错误 693 15.2.3 使用外部表加载不同的文件 697 ...

    Oracle编程艺术

    设置SQL*Plus 的AUTOTRACE ......................................................... 35 配置Statspack............................................................................. 37 定制脚本...............

Global site tag (gtag.js) - Google Analytics