sql loader可以把一些以文本格式存放的数据顺利地导入到中,它是一种在不同数据库之间进行数据迁移非常方便而且通用的工具。缺点就是速度比较慢,另外对blob等类型的数据就有点麻烦了。

一、用法:SQLLDR keyword=value [,keyword=value,...]

二、有效的关键字:

userid -- ORACLE username/password

control –控制文件

log –记录的日志文件

bad –坏数据文件

data –数据文件

discard –丢弃的数据文件

discardmax–允许丢弃数据的最大值(全部默认)

skip -- Number of logical records to skip  (默认0)

load -- Number of logical records to load  (全部默认)

errors –允许的错误记录数(默认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(默认256000)

每次提交记录的缓冲区的大小(字节为单位,默认256000)

silent --禁止输出信息(header,feedback,errors,discards,partitions)

direct –使用直通路径方式导入(默认FALSE)

parfile -- parameter file: name of file that contains parameter specifications

parallel --并行导入(默认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)

readsize -- Size of Read buffer                (默认1048576)

与bindsize成对使用,其中较小者会自动调整到较大者。sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。

external_table-- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE(默认NOT_USED)

columnarrayrows-- Number of rows for direct path column array(默认5000)

streamsize-- Size of direct path stream buffer in bytes(默认256000)

multithreading-- use multithreading in direct path

resumable -- enable or disable resumable for current session(默认FALSE)

resumable_name-- text string to help identify resumable statement

resumable_timeout-- wait time (in seconds) for RESUMABLE(默认7200)

date_cache-- size (in entries) of date conversion cache(默认1000)

注意:有两种方式可以指定命令行参数:通过位置或者通过关键字。

(1)通过位置指定命令行参数的例子:'sqlldr scott/tiger foo';

(2)通过关键字指定命令行参数的例子:'sqlldr control=foo userid=scott/tiger';

不能前面使用关键字指定后面通过位置指定的混合方式;

比如:'sqlldr scott/tiger control=foo logfile=log'是允许的;

但'sqlldr scott/tiger control=foo log'不允许。

通过位置指定命令行参数的时候,必须将“位置”放在user/passwd之前。

为清楚起见最好所有命令行参数都用关键字指定。

三、控制文件:一个控制命令的脚本文件,通常以ctl结尾,内容如下:

LOAD DATA

INFILE't.dat'             //要导入的文件

// INFILE 'tt.date'        //导入多个文件

// INFILE *              //表示要导入的内容就在control文件里下面的BEGINDATA后面就是导入的内容

INTO TABLEtable_name  //指定装入的表

BADFILE'c:\bad.txt'    //可选,指定坏文件地址,缺省在当前目录下生成与原文件名一致的.bad文件

//*************以下是4种装入表的方式

APPEND//原先的表有数据就加在后面

// INSERT            //装载空表如果原先的表有数据sqlloader会停止默认值

// REPLACE       //原先的表有数据原先的数据会全部删除

// TRUNCATE            //指定的内容和replace的相同会用truncate语句删除现存数据

//*************指定分隔符

FIELDS TERMINATED BY',' OPTIONALLY ENCLOSED BY '"'

// TERMINATED BY WRITESPACE //以空白分割

TRAILING NULLCOLS//表的字段没有对应的值时允许为空

*************下面是表的字段

(

col_1 , col_2 ,col_filler FILLER// FILLER关键字此列的数值不会被装载

//如: lg,lg,not结果lg lg

)

如果没声明FIELDS TERMINATED BY ','时,可以用下面两种方式实现同样功能:

(1)、为每一列指定分隔符

(

col_1 [interger external] TERMINATED BY ',' ,

col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,

col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'

)

(2)、用位置告诉字段装载数据

(

col_1 position(1:2),

col_2 position(3:10),

col_3 position(*:16), //这个字段的开始位置在前一字段的结束位置

col_4 position(1:16),

col_5 position(3:10) char(8) //指定字段的类型

)

BEGINDATA         //对应开始的INFILE *要导入的内容就在control文件里

10,,what

20,lg,show

例子:

[oracle@ZR230-117 ~]$ vi a.ctl

Esc i

options (bindsize=655360,direct=true)

load data

infile '/usr/oracle/checkcode5.csv'

Append into table img_authcode

fields terminated by ';'

(pic_id,authcode,path)

:wq!

注:# bindsize每次提交记录的缓冲区direct使用直通方式,缺省为false

#读取'/usr/oracle/checkcode5.csv'这个excl文件

#添加到img_authcode这个表里

#每个字段间以“;”隔开

#分别对应pic_id,authcode,path这三个字段

#如果只导入一列,那么要注意用position标识一下字段长度:

options (bindsize=655360,direct=true)

load data

infile 'sex.txt'

insert into table id_temp

(id position(1:10))//从第一个字节开始到第十个结束

导入控制文件

[oracle@ZR230-117 ~]$ sqlldr member/member control=a.ctl

提示完成:

SQL*Loader: Release10.2.0.2.0 - Production on Thu Mar 20 09:47:24

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

Load completed - logical record count 10000.

查看一下,有无错误:

[oracle@ZR230-117 ~]$ more a.log

SQL*Loader: Release10.2.0.2.0 - Production on Thu Mar 20 09:47:24 2008

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

Control File:a.ctl

Data File:/usr/oracle/checkcode5.csv

Bad File:checkcode5.bad

Discard File:none specified

(Allow all discards)

Number to load: ALL

Number to skip: 0

Errors allowed: 50

Continuation:none specified

Path used:Direct

Table IMG_AUTHCODE, loaded from every logical record.

Insert option in effect for this table: APPEND

Column NamePositionLenTerm Encl Datatype

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

PIC_IDFIRST*;CHARACTER

AUTHCODENEXT*;CHARACTER

PATHNEXT*;CHARACTER

The following index(es) on table IMG_AUTHCODE were processed:

index MEMBER.SYS_C0020883 loaded successfully with 10000 keys

Table IMG_AUTHCODE:

10000 Rows successfully loaded.

0 Rows 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.

Bind array size not used in direct path.

Column arrayrows :5000

Stream buffer bytes:256000

Readbuffer bytes: 1048576

Total logical records skipped:0

Total logical records read:10000

Total logical records rejected:0

Total logical records discarded:0

Total stream buffers loaded by SQL*Loader main thread:2

Total stream buffers loaded by SQL*Loader load thread:0

Run began on Thu Mar 20 09:47:24 2008

Run ended on Thu Mar 20 09:47:25 2008

java oracle sqlldr,oracle sqlldr相关推荐

  1. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  2. 甲骨文正式发布Java 14(Oracle JDK 14)

    甲骨文两年来,每六个月如约发布新版本的Java,Oracle JDK 14为开发人员带来创新功能和新特性预览.Oracle JDK 14增加了一些新特性来提高开发人员工作效率,这些新特性包括:对swi ...

  3. cacti监控java,Cacti for Oracle监控

    Cacti关于Oracle数据库的监控 OMA10g的安装 5.1.1 介绍 OEM管理升级到10以后必须安装OMA才支持SNMP管理,而ORACLE给出的SNMP支持是到2018年,所以建议ORAC ...

  4. jdbc oracle存储过程,java jdbc 执行oracle存储过程

    java jdbc 执行oracle存储过程 发布时间:2020-07-12 08:25:32 来源:51CTO 阅读:188 作者:v512345 java代码 public Connection ...

  5. Java EE与Java SE:Oracle是否放弃了企业软件?

    Java Enterprise Edition是全球Java社区中最大的困惑来源之一. 就像<星球大战>和<星际迷航 >之间的区别一样,对于"原力觉醒"是他 ...

  6. java制作oracle程序,Java程序操作Oracle两种方式之简单实现

    Java程序操作Oracle两种方式之简单实现 1.通过JDBC-ODBC桥连接Oracle数据库 (1)创建odbc源,在控制面板->管理工具->数据源(odbc)中添加DSN,比如取名 ...

  7. java jdbc连接oracle数据库连接 不抛出异常,JDBC连接Oracle发生异常的原因

    当你通过JDBC连接Oracle数据库时发生了异常首先应该确认你的JRE是否配置正确,一般oracle10g,JRE1.4以上应当使用ojdbc14.jar. 其次你要确定你的Java语法是否错误,这 ...

  8. oracle jinitiator版本太旧,Windows7系统运行java软件提示Oracle JInitiator版本太旧怎么办...

    Java是面向对象windows7系统用户反映说在运行java的时候,提示OracleJInitiator版本太旧,该怎么解决这样的问题呢,现在给大家分享一下 1.如图,弹出需要安装更高版本Oracl ...

  9. Java 失宠于 Oracle?

    在 Python.JavaScript 等一众编程语言崛起风靡之际,一代霸主 Java 风采虽不及当年,但仍横扫了各大编程语言排行榜,也依旧是各大企业级应用开发语言中的 NO.1. TIOBE 201 ...

  10. oracle 传递table,将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i)...

    将对象类型表从java传递到oracle 8i(Pass table of object type from java to oracle 8i) 我需要将一个对象列表(如值表)从java传递给ora ...

最新文章

  1. php 访问超时,PHP http请求超时问题解决方案
  2. 基于高德地图的描点操作,监听地图缩放,展示合理数量的marker
  3. 内置对象和自定义对象的原型链
  4. 【AI视野·今日Robot 机器人论文速览 第十三期】Wed, 23 Jun 2021
  5. 架构师必须补充的能力
  6. red hat linux综合实验报告,实验一 Red Hat Linux 9.doc
  7. Django 发送邮件
  8. DeepMind高赞课程:24小时看完深度强化学习最新进展(视频)
  9. 安装Office SharePoint Server 2010实战
  10. wps怎么将字体变得很大_wps如何将字体无限放大
  11. 计算机系统集成过程检查规范,系统集成项目验收规范.docx
  12. MySQL的索引与事务(面试必考) - 细节狂魔
  13. Unity Shader案例之——阴阳师画符效果
  14. Fortran 读取gps广播星历和精密星历
  15. 专科出来的计算机学生,月薪两万是否不切实际?
  16. uniapp-map基本使用
  17. MoveIT和KDL中进行机械臂位置和姿态插值
  18. Android开发——RelativeLayout.LayoutParams的使用
  19. 好不容易找到工作,还给期权,要去吗?
  20. Python+Eclipse配置`PyDev`完整教程

热门文章

  1. 使用 Java 操作 Kubernetes API
  2. 北京/西安内推 | 中国移动研究院NLP组招收自然语言处理算法实习生
  3. python字符串变量替换_Python基于template实现字符串替换
  4. MSN账号被盗,成功找回记
  5. 知途云仓2.0 淘宝礼品一件代发php源码
  6. 联想从国有企业演变成民营集团揭秘(深度)
  7. 怎么样把 swf格式 转换为flv格式
  8. 张宇:概率论与数理统计公式总结
  9. 概率论 方差公式_数学提高方差的计算公式是什么
  10. Struts2详细使用教程