oracle数据库sqlloader,sql loader ---ORACLE SQLLDR

sql loader的基本使用:

1. sql loader里有几个概念:

控制文件:和数据库的文件不是一回事,个人理解是用于数据加载控制的。

数据文件:要加载入库的数据文件,支持文本,csv, 等格式。 数据文件的内容可以放在控制文件的最后。

×注意:最好数据记录之间不要有空行,包括数据的最后,否则有可能有些报错,但是不影响导入。

错误文件: 从sql loader中产生,文件名一般为".bad",主要是把一些sql loader无法加载的数据放在这个文件里。

日志文件: 从sql loader中产生,文件名一般为".log", 主要是把数据加载过程中的信息放在这个文件里。

2. 一个使用的例子:

1.SCOTT@orcl> create table t11 (id int, ename varchar2(20), job varchar2(20));

2.

3.Table created.

数据文件:每一行表示一条记录, 每一个逗号之间的是字段。

1.[milo@milo ~]$ cat data.txt

2.1, milo, dba

3.2, henrry, mobile sw developer

4.3, kail, developer

5.4, sanzo, test engineer

控制文件:

1.[milo@milo ~]$ cat sqlldr.ctl

2.load data

3.infile data.txt

4.truncate into table t11

5.fields terminated by ","

6.(id, ename, job)

由于使用的是truncate,会先把表truncate再加载,truncate的位置还可能是insert(表要为空),append,replace(相当于delete表中数据,然后在insert)。

fields terminated by ","  => 说明使用逗号去分割每个字段

执行数据加载:

之前我们先看下表中的数据

1.SCOTT@orcl> select * from t11;

2.

3.        ID ENAME JOB

4.---------- -------------------- --------------------

5.         1 milo dba

执行加载:

1.[milo@milo ~]$ sqlldr scott/tiger control=sqlldr.ctl

2.

3.SQL*Loader: Release 10.2.0.1.0 - Production on Wed Apr 6 07:20:47 2011

4.

5.Copyright (c) 1982, 2005, Oracle. All rights reserved.

6.

7.Commit point reached - logical record count 4

再次查询如下:数据已经加载到表里

1.SCOTT@orcl> select * from t11;

2.

3.        ID ENAME                JOB

4.---------- -------------------- --------------------

5.         1  milo                 dba

6.         2  henrry               mobile sw developer

7.         3  kail                 developer

8.         4  sanzo                test engineer

细心的你也许发现了,我们的分割符是",", 但是数据文件里的数据形式是

1, milo, dba

也就是说每个逗号后,带有一个空格,这个空格也被加入了数据中。

在这种情况下,terminated by语句是严格按照""里内容来的。

所以需要注意数据格式的统一,以及分隔符的严谨性。

1.SCOTT@orcl> select ename, length(ename) length from t11;

2.

3.ENAME LENGTH

4.-------------------- ----------

5. milo 5

6. henrry 7

7. kail 5

8. sanzo 6

而且,正如之前提到的如果数据文件有多余的空行,sql loader会把他们看成是非法数据:

我们在第5行加入了一个空行,犹如加入一行非法数据一样:

1.[milo@milo ~]$ cat -n data.txt

2.     1 1, milo, dba

3.     2 2, henrry, mobile sw developer

4.     3 3, kail, developer

5.     4 4, sanzo, test engineer

6.     5

注意到count为5.而实际真实数据为4行。

1.[milo@milo ~]$ sqlldr scott/tiger control=sqlldr.ctl

2.

3.SQL*Loader: Release 10.2.0.1.0 - Production on Wed Apr 6 07:36:47 2011

4.

5.Copyright (c) 1982, 2005, Oracle. All rights reserved.

6.

7.Commit point reached - logical record count 5

注意此时,data.bad里放入了一行数据告诉你,此行数据无效。

1.[milo@milo ~]$ cat -n data.bad

2.     1

查看log:

[milo@milo ~]$ cat sqlldr.log

SQL*Loader: Release 10.2.0.1.0 - Production on Wed Apr 6 07:42:34 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Control File:   sqlldr.ctl

Data File:      data.txt

Bad File:     data.bad

Discard File:  none specified

(Allow all discards)

Number to load: ALL

Number to skip: 0

Errors allowed: 50

Bind array:     64 rows, maximum of 256000 bytes

Continuation:    none specified

Path used:      Conventional

Table T11, loaded from every logical record.

Insert option in effect for this table: TRUNCATE

Column Name                  Position   Len  Term Encl Datatype

------------------------------ ---------- ----- ---- ---- ---------------------

ID                                  FIRST     *           CHARACTER

Terminator string : ', '

ENAME                                NEXT     *           CHARACTER

Terminator string : ', '

JOB                                  NEXT     *           CHARACTER

Terminator string : ', '

Record 5: Rejected - Error on table T11, column ID.

Column not found before end of logical record (use TRAILING NULLCOLS)

Table T11:

4 Rows successfully loaded.

1 Row not loaded due to data errors.

0 Rows not loaded because all WHEN clauses were failed.

0 Rows not loaded because all fields were null.

Space allocated for bind array:                  49536 bytes(64 rows)

Read   buffer bytes: 1048576

Total logical records skipped:          0

Total logical records read:             5

Total logical records rejected:         1

Total logical records discarded:        0

Run began on Wed Apr 06 07:42:34 2011

Run ended on Wed Apr 06 07:42:34 2011

Elapsed time was:     00:00:00.11

CPU time was:         00:00:00.02

把分隔符也改了下,这下就数据就没问题了:

1.SCOTT@orcl> select ename, length(ename) length from t11;

2.

3.ENAME LENGTH

4.-------------------- ----------

5.milo 4

6.henrry 6

7.kail 4

8.sanzo 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

倒数日电脑版_应用日报|iOS 或更名为 iPhoneOS,倒数日 Mac 版上线限时免费

今日推荐倒数日 Days Matter for Desktop免费,macOS 86 MB倒数日 Days Matter 是 iOS 端非常经典的应用,今天它的 Mac 版本上线,限时免费 7 天。它延续了 iOS 端的风格语言,同样能帮你记录生活中重要的日子:例如恋人…

【TPC协议头解析】

Source Port 源端口 Destination Port 目的端口 Sequence Number 数据报编号 (seq)(按字节序)保证有序 Acknowledgment Number (ACK) 报文应答, 保证可靠性 Data offset 跳到data数据部分 Reserved 保留部分 URG 紧急数据标识 ACK 确认消息…

hibernate查询缓存_在Hibernate中启用实体和查询缓存

hibernate查询缓存1.简介 在我执行过的与性能相关的任务中,这就是其中之一。 令人担心的是,如果对于特定实体每次都调用相同的查询,并且表数据在特定的时隙内不易更改,则我们可以使用Hibernate缓存查询结果。 这意味着&#xff0c…

iphone新旧手机数据传输已取消_如何取消iPhone手机App自动扣费?三种方法让你不再被“偷”...

一直以来苹果手机App这个自动续费真是让大家不胜其烦,钱虽然不多可总是平白无故这里十块,那里二十块的被扣也是不小的浪费,日常生活中为了追追剧、听听音乐、玩玩游戏难免会开通一些App会员而选择自动续费的话每月会费是有不错优惠的&#xf…

【TCP三次握手与四次挥手最强解析】

TCP连接拥塞控制四种方法总结(详细简单,稳的一批) TCP三次握手 作用:确认seqnumber;确定窗口大小以及最大报文大小 TCP四次挥手 WAIT_TIME状态到CLOSED需要2MSL时间(最长单位MSL为2min,一般30s&#xff0…

oracle基础授权,Oracle基础学习3--Oracle创建用户并授权

Oracle服务器端的操作一般如下:1)安装Oracle服务器软件2) 创建数据库(安装时自动创建)3) 配置监听(安装时自动配置)4) 启动Oracle实例5) 创建用户表空间6) 创建新用户并授权下面就开始讲创建用户表空间、创建新用户并授权两项&#x…

mybatis缓存二级缓存_MyBatis缓存与Apache Ignite的陷阱

mybatis缓存二级缓存一周前,MyBatis和Apache ignite 宣布支持apache ignite作为MyBatis缓存(L2缓存)。 从技术上讲,MyBatis支持两个级别的缓存: 本地缓存,默认情况下始终启用 L2缓存,可选 随…

【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】

H264压缩比 YUV格式为 YUV420 分辨率 640 x 480 帧率 15 ,比特率为 640 x 480 x 1.5 x 15 x 8 =55M ,建议码流 500kpbs 。 压缩率 1 / 100 声网权威推荐码流 GOP 所谓GOP,意思是画面组,MPEG格中的帧序列,分为I、P、B三种,如排成IBBPBBPBBPBBPBBP...样式,这种…

企业是否应该实现对客户需求的快速响应_CRM系统给企业带来的创新有哪些?如何让销售爱用CRM系统?...

对于现代企业来说,CRM已然成为了一个成熟的项目,是能够给客户带来不菲的价值的。如果应用好,是能够取得提高客户满意度与企业经济效益的双赢成绩的。一、目前,CRM能够给企业带来的业务创新有哪些?1.统一数据CRM系统能将…

脚本实现oracle服务启停,通用服务启停shell脚本

####################################通用启停脚本#david###################################APP_NAMEmyApppsid0checkpid() {redisPidps -ef | grep $APP_NAME | grep -v grep | awk {print $2}if [[ -n "$myAppPid" ]]; thenpsid$myAppPidelsepsid0fi}status() {…

junit注释_通过此注释改善您的JUnit体验

junit注释JUnit可能是所有Java项目中90%的一部分。 令人兴奋的是,我们很快将拥有支持Java 8的JUnit 5 。 我们最近在博客上发表了一项改进 。 回到JUnit 4领域,有一个小技巧,我只能建议您进行所有单元测试。 只需在此处添加这个小…

lagom的微服务框架_微服务有麻烦吗? Lagom在这里为您提供帮助。 试试吧!

lagom的微服务框架蛋糕支持。 我们很自豪地宣布,新的Apache许可的微服务框架Lagom可在GitHub上使用 ! 当其他框架专注于打包和实例启动时,Lagom重新定义了Java开发人员构建基于微服务的应用程序的方式。 服务是异步的。 服务内通信由您管理。…

oracle创建简单包,Oracle创建程序包是什么?

一、程序包的相关知识1。定义与说明a。 相关对象的封装b。 程序包的各部分- 程序包规格说明声明子程序- 程序包主体定义子程序2。使用程序包的优点- 模块化- 更轻松的应用程序设计- 信息隐藏- 新增功能- 性能更佳3。公有项和私有项的区别公有项:在程序包说明部分定义…

python离线安装包_Python2.7如何离线安装包

1 Python版本是2.7已经在CentOS7系统自带,没有pip,没有互联网环境,需要先安装 backports.ssl_match_hostname-3.4.0.2.tar.gz,直接再CentOS7系统运行以下命令: 解压tar文件 tar -xvf backports.ssl_match_hostname-3.4…

java ee api_Java EE安全性API向前发展

java ee apiJava EE安全API( JSR 375 )正在向前发展,正如Arjan Tijms在此处概述的那样 : http : //arjan-tijms.omnifaces.org/p/whats-new-in-java-ee-security-api-10 。 html 。 需要注意的一件事是,我们现在为参考…

【音视频安卓开发 (三)】OpenGL ES 直接绘制YUV

EGL OpenGL与窗口对应的的适配层,针对安卓平台的适配器。 surface 交互到窗口显示

上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS

Windows XP 是经典的、高效的、可靠的、性能良好的操作系统,然而其大部分版本都已在 2014 年停止支持。其较为流行的版本 SP2 与 SP3 由于各种原因,目前均不能直接正常访问安装了 SSL 证书的网站,或映射某些服务器提供的共享文件夹。本文将提…

oracle数据库集群日志,Oracle集群数据库中恢复归档日志

恢复归档日志:select * from v$log_history t where t.THREAD#恢复归档日志:select * from v$log_history t where t.THREAD#1order by t.FIRST_TIME desc实例1:恢复一个归档日志:run{allocate channel dev_0 type sbt_tapeparms …

jcmd 命令_jcmd:一个可以全部统治的JDK命令行工具

jcmd 命令我在过去的几篇文章中都引用了方便的JDK工具jcmd ,但是像我以前对jps所做的那样,只专注于它的实用性 。 jcmd工具是随Oracle Java 7引入的,通过使用它来识别Java进程的ID (与jps相似),获取堆转储 …