Oracle SQL*Loader 使用方法

sqlldr----数据加载工具 sqlldr即SQL*Loader,SQL*Loader是Oracle的高速批量的数据加载工具,通常用来将操作系统文件(数据)迁移到Oracle数据库中,是大型数据仓库选择使用的加载方法。其可用于多种平面文件格式向Oralce数据库中加载数据,sqlldr可以在极短的时间内加载数量庞大的数据,其有两种操作模式:1)传统路径(conventional path):sqlldr会利用SQL插入为我们加载数据。 阅读详情

Oracle SQL*Loader 使用方法

 

SQL*Loader是oracle的高速批量数据加载工具。这是一个非常有用的工具,可用于从多种平面文件格式向Oracle数据库中加载数据。SQLLDR可以在极短的时间内加载数量庞大的数据。

它有两种操作模式:

传统路径(conventional path):SQLLDR会利用SQL插入为我们加载数据。

直接路径(direct path):采用这种模式,SQLLDR不使用SQL;而是直接格式化数据库块,而绕过整个SQL引擎和UNDO生成,同时还可能避开REDO生成。要在一个没有任何数据的库中充分加载数据,最快的方法就是采用并行直接路径加载。

常规路径装载使用SQL INSERT语句和内存中的键数组缓存(bond array buffers)将数据装载到Oracle数据库的表中。这个过程与其他进程竞争SGA内部的内存资源。如果数据库已经有支持多个并发处理进程的开销,常规路径装载会降低装载的性能。

使用常规路径装载的另外一个开销是装载进程必须搜索数据库,以查找被装载表的部分填充块,并试图填充这些块。这对日常的事务处理是非常有效的,但是它是常规路径装载的一个额外开销。


最好或有时必须使用常规路径装载方法,而不能使用直接路径装载的情形:

1、如果被装载的表是被索引的并且被并发访问的,或者如果要对表进行插入或删除,必须使用常规路径装载。

2、当在控制文件中使用SQL函数时,必须使用常规路径装载。当使用直接路径装载时,SQL函数将不适用。

3、当装载的表是一个簇表时。

4、当装载少量记录到一个大型索引表,或当表具有引用完整性或检查约束时。

5、当装载工作是通过SQL * Net或Net8在不同的平台上进行时,为使用直接路径装载,两个节点必须属于同一个计算机家族并且使用同样的字符集。


不需要使用SQL INSERT语句和键数组缓存,直接路径装载格式化输入数据到oracle数据块并将它们直接写入数据库中。注意直接路径装载总是在表的最高水位之上插入数据,这种方式消除了用于搜索部分填充块的时间。

SQLLDR是一个命令工具,并非一个API,不能从PL/SQL调用。


SQL*Loader具有很多功能,包括以下能力:

可以从不同文件类型的多个输入数据文件中加载数据;

输入记录可以是定长的或变长的记录;

可以在同一次运行中加载多个表,还可以逻辑地将选定的记录载入到每个表中;

在输入数据载入表之前,可以对其使用SQL函数;

多个物理记录可以被编译成一个逻辑记录,同样,SQL可以提取一条物理记录并把它作为多个逻辑记录加载;

支持嵌套、嵌套表、VARRAYS和LOBS(包括BLOGCLOBNLOBBFILE);


SQL*Loader 组件:

0.控制文件

控制文件中包含描述输入数据的信息(如输入数据的布局、数据类型等),另外还包含有关目标表的信息,控制文件甚至还可以包含要加载的数据。

1. SQL*Loader输入数据:

SQL *Loader能够接收多种不同格式的数据文件。文件可以存储在磁盘或磁带上,或记录本身可以被嵌套到控制文件中。记录格式可以是定长的或变长的,定长记录是指这样的记录:每条记录具有相同的固定长度,并且每条记录中的数据域也具有相同的固定长度、数据类型和位置

2.SQL*Loader输出:

(1)LOAD DATA

(2)INFILE *

(3)INTO TABLE DEPT

(4)FIELDS TERMINATED BY ‘,’

(5)(DEPTNO,DNAME,LOC)

(6)BEGINDATA

(7)10,Sales,Virginia

(8)20,Accounting,Virginia

(9)30,Consulting,Virginia

(10)40,Finance,Virginia

LOAD DATA(1):这会告诉SQLLDR要做什么(在这个例子中,则指示要加载数据)。SQLLDR还可以执行CONTINUE_LOAD,也就是继续加载。只有在继续一个多表直接路径加载时才能使用后面这个选项。

INFILE * (2):这会告诉SQLLDR所要加载的数据实际上包含在控制文件中,如第6-10行所示。也可以指定包含数据的另一个文件的文件名。如果愿意可以使用一个命令行参数覆盖这个INFILE语句。[命令行选项会覆盖控制文件设置]。

INTO TABLE DEPT(3):这告诉SQLLDR要把数据加载到哪个表中。

FILEDS TERMINATED BY ‘,’(4):告诉SQLLDR数据的形式应该是用逗号分隔的值。

(DEPTNO,DNAME,LOC)(5):告诉SQLLDR所要加载的列,这些列在输入数据中的顺序以及数据类型。这是指输入流中数据的数据类型,而不是数据库中的数据类型,在这个例子中,列的数据类型默认为CHAR(255)。

BEGINDATA(6):告诉SQLLDR你已经完成对输入数据的描述,后面的行(第7-10行)是要加载到DEPT表的具体数据。

要使用以上的控制文件,建立一个空的DEPT表:

CREATE TABLE DEPT

(DEPTNO NUMBER(2) CONSTRAINT DEPT_PK PRIMARY KEY,

DNAME VARCHAR2(14),

LOC VARCHAR2(13)

);

并运行以下命令:

Sqlldr userid=/ control=demo1.ctl


表装载的方法:

INSERT这是缺省方法。该方法假设在数据装载前表是空的,如果在表中有记录,SQLLDR退出,并报:SQLLDR-601: FOR INSERT OPTION,TABLE MUST BE EMPTY,ERROR ON TABLE DEPT

APPEND这种方法允许记录被添加到数据库表中,而且不影响已经存在的记录

REPLACE 这种方法首先删除表中已经存在的记录,然后开始装载新的记录。注意,当老记录被删除时,表上的任意删除触发器将被触发

TRUNCATE 这种方法在装载数据前,使用SQL命令TRUNCATE 删除老的记录,因为去除了触发器的触发并且没有创建回滚,所以这种方法要比REPLACE快得多。为了使用这种方法约束必须被禁止,并且要授予特定的权限


如何加载定界数据?

定界数据,(delimited data)即用某个特殊字符分隔的数据。

Example:

FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”’

上面例子指定用逗号分隔数据字段,每个字段可以用双引号括起。

TERMINATED BY X’9’(使用16进制格式的制表符;采用ASCII时,制表符为9)

TERMINATED BY WHITESPACE


如何加载固定格式数据?

通常会有一个由某个外部系统生成的平面文件,而且这是一个定长文件,其中包含着固定位置的数据(POSITIONAL DATA).要加载定宽的固定位置数据,将会在控制文件中使用POSITION关键字:

LOAD DATA

INFILE *

INTO TABLE DEPT

REPLACE

(DEPTNO position(1:2),

DNAME position (3:16),

LOC position (17:29)

)

BEGINDATA

10ACCOUNTIN Virginia ,USA

可以使用相对偏移量。

DEPTNO position(1:2),

DNAME position(*:16)

表示DNAME 从3-16个字符。


如何加载日期?

只需要控制文件中DATE数据类型,并指定要使用的日期掩码。这个日期掩码与数据库中的TO_CHAR和TO_DATE中使用的日期掩码是一样。


如何使用函数加载数据?

只需要将函数加到控制文件中

(DNAME “UPPER(:dname)”

)

TRAILING NULLCOLS会导致绑定变量成为NULL,如果输入记录中不存在某一列的数据,SQLLDR会为该列绑定一个NULL值。


下面是增加SQL*Loader性能的一些补充技巧:

1)使用定位域而不要使用分隔域,分隔域要求装载器搜索数据以查找分隔符。定位域比较快,因为装载器只需要做简单的指针运算。

2)为终止域指定最大长度,使每个捆绑数组更为有效地插入。

3)预分配足够的存储空间。当数据被装载时,表中需要更多的空间, Oracle分配更多的区间以容纳数据,如果在数据装载期间频繁地做这项操作,处理的开销将非常大。在装载之前计算或估算存储空间需求能够让你预先创建必要的存储空间。

4)如果可能,在控制文件中尽量避免使用NULLIF和DEFAULTIF子句。这两个子句对于被装载的每条记录都会引起列运算。

5)分割数据文件,并行运行常规路径装载。

6)通过使用命令行参数ROWS,减少提交次数。

7)避免不必要的字符集转换,确保客户端的NLS_LANG环境与服务器端的相同。

8)只要可能,尽量使用直接路径装载方法。

9)当使用直接路径装载方法时,为表的最大索引预先排序并使用SORTED INDEXES子句。

10)当使用直接路径装载方法时,尽量使用并行直接路径选项。

11)在直接路径装载期间,尽可能少使用重做日志。有三种不同级别的控制实现这点:

禁止数据库归档;

在控制文件中使用关键字UNRECOVERABLE;

使用NOLOG属性修改表和/或索引。


直接路径并行加载的格式样例:

/opt/app/oracle/product/10.2.0/bin/sqlldrAPS/APS control=/home/oracle/APS_LOAD/ctl/AP_CONTRACT.CTLdirect=trueparallel=true   LOG=/home/oracle/APS_LOAD/log/$yesterday/AP_CONTRACT_$yesterday.logbad=/home/oracle/APS_LOAD/bad/DUE_BILL_$yesterday.bad rows=10000readsize=20000000 bindsize=20000000 DISCARD=/home/oracle/APS_LOAD/bad/discard_ts.dis


Oracle SQL*Loader数据导入乱码问题解决指南 在使用Oracle数据库进行数据导入时,经常会有数据导入过程中出现乱码的情况,这不仅会影响数据的可读性,还可能导致数据丢失或错误。SQLLoader作为Oracle提供的一个强大的数据导入工具,它在进行大批量数据导入时,对数据编码的要求非常严格。如果源数据文件的编码与数据库的字符集设置不匹配,就容易引发乱码问题。为了确保数据导入的准确性和完整性,理解SQLLoader导入乱码的成因、预防措施和解决方法,是每个数据库管理员和数据工程师必须面对的挑战。 阅读详情

相关推荐

【复现论文】Looking here or there? Gaze Following in 360-Degree Images

论文:Looking here or there?

RichardoMu的博客 1129

sql*loader

简介 SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工具。这是一个非常有用的工具,可用于多种平面文件格式向Oralce数据库中加载数据。SQLLDR可以在极短的时间内加载数量庞大的数据。它有两种操作模式。 传统路径:(conventional path):SQLLDR会利用SQL插入为我们加载数据。 直接路径(direct path):采用这种模式,SQLLDR不使用SQL;而是直接格式化数据库块。 利用直接路径加载,你能从一个平面文件读数据,并将其直接写至格式化的数据库块,而绕过整个

weixin_39259749的博客 5966

从零开始玩转Franka Panda机器人

本文总结了笔者在学习使用Franka Panda机器人时的一些方法和经验总结。

止于至玄 1万+

Oracle SQL*Loader 使用简介

作者 | JiekeXu来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)如需转载请联系授权 |(个人微信 ID:JiekeXu_DBA)大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Oracle SQL*Loader 使用简介,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!前面一文简单介绍了 ...

JiekeXu的博客 1640

【现代控制理论期末考点】

现代控制理论期末考点,适用于 SEU Automation

【人工智障 | 计算鸡视觉 | 机器孩】 1445

YOLOv11 损失函数进阶:SlideLoss 让小目标检测精度飙升

创建self.loss_fun = loss_fun # 基础损失函数(如BCEWithLogitsLoss)self.loss_coef = loss_coef # 损失系数# 计算滑动权重:根据预测与真实值的差异判断样本难度# 难度越高,权重越大该类在原有损失函数的基础上,通过diff计算样本预测与真实值的差异(差异越大,样本越难),进而生成动态权重,实现对难样本的重点学习。

m0_64661770的博客 210

【SQL*Loader】SQL*Loader实验之(11)--在数据加载时,调用系统自带或自定义函数...

【实验内容】模拟情况:在数据加载时,调用系统自带函数的情况。※调用自定义函数时方法一样。 【实验过程】 //(1)看一下数据导入前dept2中表的数据状况。-------------------------SQL...

cmy19760818的博客 175

Qt项目开发实例 (含源码)

qt教程、qt项目、qt下载、qt项目实战、qt多线程。本文通过分析demo源码,QT实战的方式进行学习,学习路线是以实战为目录,全面的使用自己的学习知识,文章中编写一系列的学习游戏demo,与大家一起分享。

啊渊的专栏 14万+

Oracle SQL*Loader 与 SQLULDR2 学习指南

控制文件 (Control File):定义数据加载规则,包括数据文件路径、目标表、字段映射等。作用:Oracle 官方工具,用于将外部数据文件(如 CSV、文本文件)高效加载到数据库表中。作用:第三方工具(非 Oracle 官方),用于从 Oracle 数据库高效导出数据到文件。直接路径加载:通过 DIRECT=TRUE 提升性能(需注意表锁定)。日志文件 (Log File):记录加载过程的详细信息。错误文件 (Bad File):存储无法加载的数据。性能远超传统 UTL_FILE 或 SPOOL。

瑞琪姐的运维小站 1215

Python爬虫实战:利用Playwright与异步技术高效抓取链家十万级二手房数据

在开始编写代码之前,我们首先需要为项目选择合适的技术栈。1. 传统方案:Requests + BeautifulSoup优点: 简单、轻量、学习成本低。直接发送HTTP请求获取HTML,然后解析。缺点: 对于大量由JavaScript动态渲染的内容无能为力。现代网站(包括链家)大量使用JS来加载数据和实现交互,简单的HTTP请求无法获取到完整的页面内容。此外,容易被基于IP或请求头特征的反爬机制拦截。2. 进阶方案:Selenium优点。

2201_76125261的博客 891

大模型的实践应用31-基于通义千问大模型改进台风和海浪预测研究,利用机器学习与通义千问结合的思路实现对台风和海浪预测分析

通义千问大模型是阿里巴巴云推出的一款大规模语言模型,旨在通过强大的自然语言处理能力提供更广泛的服务。从最初的构想到如今的广泛应用,通义千问的发展见证了人工智能领域尤其是自然语言处理技术的巨大进步。自发布以来,通义千问不断迭代升级,不仅在规模上实现了飞跃式的增长,在性能方面也得到了显著提升。本次研究尝试将通义千问强大的自然语言处理能力与经典的时间序列预测算法相结合,旨在提高对未来天气状况预测的精度。具体来说,首先使用通义千问生成高质量的文字描述来增强特征表达力;

微学AI的博客 935

Oracle SQL*Loader

一、SQL*Loader的体系结构     SQL*Loader由一个输入控制文件来控制整个装载的相关描述信息,一个或多个数据文件作为原始数据,其详细组成结构包括         Input Datafiles     -->装载到数据库的原始数据文件         Loader Control file  -->提供给QL*Loader寻找及翻译数据的相关信息

Watson的专栏 2485

Oracle EBS 寄销/VMI(1)-->基础设置

名词解释:     BPA:一揽子采购协议     BPR:一揽子发放     SR:来源补充规则     ASL:合格供应商列表     VMI: 供应商管理库存     寄售(Consignment)是把货物放在客户那里,客户要用的时候才付款的库存,一般是指卖方把

陈显平的专栏-Oracle EBS 1万+

oracle sql*loader使用方法

<br /><br />偷个懒<br />google上找了几篇<br />权且作为我的技术笔记oracle loader<br />我需要将文本文件导入ORACLE,需要建立一个表然后用LOADER导入,以前都是写到SQL里,我觉得那样真的很麻烦了。。<br />Oracle SQL*Loader 使用指南(转载)<br />SQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.<br />如何使用 SQL

384

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Oracle 工具篇+SQL*Loader

说明:本文为面向Oracle SQL*Loader初学者的指导手册 标签:SQL*Loader、SQL_Loader、数据加载、数据导入 注意:文中删去了不需要的多余部分,让初学者一目了然一学就会 相关工具:Oracle常用的3种数据加载工具sql_loader、oracle_loader、oracle_datapump 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 ★ 相关文章 ※ SQL*Loader(本文) ※ ORACLE_LOADER Access Driv

ZZT_2009 646

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Oracle 使用SQL*Loader导入文本数据

把txt或者csv文件导入oracle最方便的方法是通过plsql的文本导入器导入,但是导入大批量数据时文本导入器效率慢,可以使用oracle命令行sqlldr导入更快速。replace :删除旧记录(等价delete from table语句),替换成新导入的记录;truncate:删除旧记录(等价truncate table语句),替换成新导入的记录;其中ctl就是控制文件,log是日志,userid是oracle的用户和密码。数据文件就是你的txt或者csv文本文件,控制文件是你写的命令。

大宇进阶之路的博客 2693

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

关于oracle中sql*loader的总结

Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点: 1)能装入不同数据类型文件及多个数据文件的数据 2)可装入固定格式,自由定界以及可度长格式的数据 3)可以装入二进制,压缩十进制数据 4)一次可对多个表装入数据

513

oracle数据库sqlloader,Oracle 的SQL*LOADER

Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点:1.1 功能1)能装入不同数据类型文件及多个数据文件的数据2)可装入固定格式,自由定界以及可度长格式的数据3)可以装入二进制,压缩十进制数据4)一次可对多个表装入数据5)连接多个物理记录装到一个记录中6)对一单记录分解再装入到表中7)可以用 数对制定列生成唯一的KEY8)可对磁盘或 磁带数据...

weixin_33143629的博客 1370

【12c】Oracle 12c SQL*Loader介绍

SQL*Loader是Oracle提供的一个非常有用的工具,可以实现批量数据的高速加载,它将数据从外部文件加载到Oracle数据库的表中,本篇将对Oracle 12c的SQL*Loader进行简单的介绍和演示。 1 SQL*Loader介绍 SQL*Loader的使用,是通过Oracle的命令行指令sqlldr实现,该指令是客户端工具,可通过KEY-VALUE的形式指定对应的选项,或者使用参数文件和控制文件来实现,下面展示的是SQL*Loader的工作原理: 控制文件主要用于控制数据加载的行.

个人公众号:Alen的数据库学习笔记 1348

oracle load 用法,Oracle中SQL*LOADER使用方法总结

Oracle数据库中SQL*LOADER使用方法总结(一)sqlldr 有两种使用方法:1.使用一个控制文件和一个数据文件。2.只有一个控制文件,控制文件中包含数据。分别对两种方法用例子进行说明:1.使用一个控制文件和一个数据文件。a.创建表CREATE TABLE SCOTT.ACT_1(ACTNO INTEGER NOT NULL...

weixin_39895977的博客 858

详细讲解Oracle SQL*Loader的使用方法

SQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载. 如何使用 SQL*Loader 工具 我们可以用Oracle的sqlldr工具来导入数据。例如: sqlldr scott/tiger control=loader.ctl 控制文件(loader.ctl) 将加载一个外部数据文件(含分隔符).

ikikik2002的专栏 804

使用SQL*Loader将CSV文件数据导入ORACLE数据表

使用SQL*Loader将CSV文件数据导入ORACLE数据表 LuckySYM 1. 环境条件与操作目标 (1) Oracle中存在一个Employee表,表中包含4个字段: emp_id   number emp_name varchar2 emp_date date dpt_id   number (2) 一个CSV文件emp.csv, 包含了上述表中的相

东方未明 9647

Oracle 的SQL*LOADER使用

Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点: 1.1  功能 1)能装入不同数据类型文件及多个数据文件的数据 2)可装入固定格式,自由定界以及可度长格式的数据 3)可以装入二进制,压缩十进制数据 4)一次可对多个表装入数据 5)连接多个物理记录装到一个记录中 6)对一单记录分解再装入到表中 7)可以用 数对制定列

做技术,贵在学习与坚持! 1535
上一篇: Oracle RMAN 备份保留策略
下一篇: Logstash 使用详解
听雪楼主.
博客等级 码龄10年 513粉丝 214原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值