`

sqlldr的用法

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

在命令行下执行 Oracle  的 sqlldr 命令,可以看到它的详细参数说明,要着重关注以下几个参数:

userid -- Oracle 的 username/password[@servicename]
control -- 控制文件,可能包含表的数据
-------------------------------------------------------------------------------------------------
log -- 记录导入时的日志文件,默认为 控制文件(去除扩展名).log
bad -- 坏数据文件,默认为 控制文件(去除扩展名).bad
data -- 数据文件,一般在控制文件中指定。用参数控制文件中不指定数据文件更适于自动操作
errors -- 允许的错误记录数,可以用他来控制一条记录都不能错
rows -- 多少条记录提交一次,默认为 64
skip -- 跳过的行数,比如导出的数据文件前面几行是表头或其他描述

还有更多的 sqlldr 的参数说明请参考:sql loader的用法。


用例子来演示 sqlldr 的使用,有两种使用方法:

1. 只使用一个控制文件,在这个控制文件中包含数据
2. 使用一个控制文件(作为模板) 和一个数据文件


下面来看示例

create table users(
user_id number,           --用户 ID
user_name varchar2(50),   --用户名
login_times number,       --登陆次数
last_login date           --最后登录日期
)

insert into users values(1,'Unmi',3,sysdate);

insert into users values(2,NULL,5,to_date('2008-10-15','YYYY-MM-DD'));

insert into users values(3,'隔叶黄莺',8,to_date('2009-01-02','YYYY-MM-DD'));

insert into users values(5,'不知秋',1,to_date('2008-12-23','YYYY-MM-DD'));




第二种方式: 使用一个控制文件(作为模板) 和一个数据文件

1) 建立数据文件,我们这里用 PL/SQL Developer 导出表 users 的记录为 users_data.csv 文件

建立一个控制文件 users.ctl,内容如下:
OPTIONS (skip=1,rows=128) -- sqlldr 命令显示的选项可以写到这里边来,skip=1 用来跳过数据中的第一行
LOAD DATA
INFILE "users_data.csv" --指定外部数据文件,可以写多个 INFILE "another_data_file.csv" 指定多个数据文件,也可以在此处不写,在后面指定
--这里还可以使用 BADFILE、DISCARDFILE 来指定坏数据和丢弃数据的文件,
truncate --操作类型,用 truncate table 来清除表中原有记录
INTO TABLE users -- 要插入记录的表
Fields terminated by "," -- 数据中每行记录用 "," 分隔
Optionally enclosed by '"' -- 数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时
trailing nullcols --表的字段没有对应的值时允许为空
(
virtual_column FILLER, --这是一个虚拟字段,用来跳过由 PL/SQL Developer 生成的第一列序号
user_id number, --字段可以指定类型,否则认为是 CHARACTER 类型, log 文件中有显示
user_name,
login_times,
last_login DATE "YYYY-MM-DD HH24:MI:SS" -- 指定接受日期的格式,相当用 to_date() 函数转换
)
说明:在操作类型 truncate 位置可用以下中的一值:

1) insert     --为缺省方式,在数据装载开始时要求表为空
2) append  --在表中追加新记录
3) replace  --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录


执行命令
sqlldr userid=scott/anwei@orcl control=user.ctl data=user.cvs  log=user.log


执行完 sqlldr 后希望能留意一下生成的几个文件,如 users.log 日志文件、users.bad 坏数据文件等。特别是要看看日志文件,从中可让你更好的理解 Sql Loader,里面有对控制文件的解析、列出每个字段的类型、加载记录的统计、出错原因等信息。


分享到:
评论

相关推荐

    Oracle中的sqlldr用法.doc

    Oracle中的sqlldr用法详解 Oracle中的sqlldr工具是用来将数据从外部文件加载到Oracle数据库中的一个命令行工具。sqlldr命令提供了许多参数来控制加载过程,下面将详细介绍这些参数的作用和用法。 userid 参数...

    windowns下利用bat命令+oracle的sqlldr功能导入数据

    总结来说,通过Windows下的BAT命令与Oracle的SQL*Loader功能结合,我们可以构建一个高效的数据库导入流程,尤其在处理大量数据时,这种自动化方法能够显著提高工作效率。在实际应用中,要根据具体需求灵活调整和优化...

    sqlldr_所有命令及用法

    SQL*Loader,简称sqlldr,是Oracle数据库系统中用于快速加载大量数据到数据库的一个实用工具。它是Oracle Data Pump的一部分,提供了高效的数据导入功能,适用于批量处理大数据量的场景。 1. **sqlldr简介** SQL*...

    java调用shell脚本执行sqlldr与存储过程

    在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...

    oracle11G32位客户端sqlldr文件,包含tnsus.msb,ulus.msb及使用方法

    oracle11G32位客户端sqlldr文件,包含tnsus.msb,ulus.msb及使用方法,当使用sqlldr命令报这样的错误时说明缺少以上文件“Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not...

    sqlldr导入带有自动增加的数据

    当涉及到处理带有自动增加字段的表时,SQL*Loader提供了一些灵活的方法来确保数据的正确加载,同时维护表结构的完整性。以下是对“sqlldr导入带有自动增加的数据”这一主题的详细解析,基于给定的文件信息。 ### ...

    sqlldr导入csv文档

    通过以上分析,我们了解了SQL*Loader的基本使用方法及其在复杂数据操作中的应用,包括数据导入、更新和插入操作。这些技能对于数据库管理员和开发人员来说都是至关重要的,尤其是在处理大规模数据集时。

    浅谈ORACLE的SQLLDR

    - Oracle提供了详尽的官方文档和帮助指南,覆盖了SQL Loader的所有功能特性及其使用方法。 - 社区论坛和博客文章也提供了丰富的实际案例和经验分享,有助于用户更好地理解和掌握SQL Loader。 #### 三、SQL Loader...

    D:\sqluldr2\sqlldr(linux+windows).rar

    **SQL*Loader(SQL Loader...综上所述,这个压缩包提供了一个全面的SQL*Loader使用资源,无论是在Linux还是Windows环境下,用户都能根据提供的案例和指南快速掌握数据导入到Oracle数据库的方法,从而提升数据管理效率。

    sqlldr报超出字符长度错误

    根据题目中的描述,“sqlldr报超出字符长度错误”,这一问题主要是因为源文件中的数据长度超出了目标表中相应列的定义长度。在SQL*Loader执行过程中,如果某一字段的实际值长度超过了目标表该列的长度,就会触发此...

    sqlldr导入数据

    本篇文章将深入探讨sqlldr的使用方法以及如何通过它来批量导入数据。 首先,我们要理解sqlldr的基本结构。它通过控制文件(如`gl_point.ctl`)来定义数据导入的规则,包括字段映射、数据格式、错误处理等。例如,`...

    sqlldr数据加载工具(sqlldr的介绍)

    SQL*Loader提供了两种优化加载速度的方法: 1. **DIRECT PATH**: 直接路径加载跳过了Oracle的SQL引擎,直接将数据写入数据文件,减少了处理时间和内存占用。 2. **PARALLEL**: 并行加载,通过多个进程同时加载数据,...

    我的第一个SQLLDR

    3. **运行SQL*Loader**:使用`sqlldr`命令执行控制文件,将数据从文件导入到数据库。例如: ``` sqlldr username/password@database control=control_file.ctl log=log_file.log ``` 4. **检查和验证**:导入...

    oracle最强大的sqlldr上传工具

    Oracle的SQL*Loader是Oracle数据库系统中用于快速批量导入大量数据到数据库的强大工具。它能够高效地处理文本文件,将数据快速转化为...熟练掌握SQL*Loader的使用方法和技巧,能够为数据库管理工作带来极大的便利。

    定制化客户端,仅包含sqlplus、sqlldr、exp、imp

    配置环境变量的方法与标准Oracle客户端类似,主要涉及设置如ORACLE_HOME、PATH和LD_LIBRARY_PATH等变量,确保系统能找到所需的库文件。 总的来说,这个定制化客户端是针对那些只需要基础数据库操作的用户设计的,它...

    oracle sqlldr 导入乱码问题

    5. 考虑使用其他工具:如果以上方法仍无法解决问题,可以考虑使用其他数据迁移工具,如SQL Developer或PL/SQL Developer,它们通常有更丰富的字符集支持和错误处理机制。 6. 数据库会话设置:在导入数据前,确保...

    spool导出与sqlldr导入

    下面将详细解释这两个概念及其使用方法。 **1. Spool导出** Spool是Oracle SQL*Plus中的一个功能,它允许用户将SQL*Plus会话的输出保存到文件中,而不是直接显示在屏幕上。使用spool可以方便地生成报告、备份查询...

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

    在本篇中,我们将深入探讨Oracle的数据导入导出及Sql Loader的使用方法。 1. **Oracle数据导入导出** Oracle提供了多种数据导入导出工具,包括`expdp`(Export Data Pump)和`impdp`(Import Data Pump)以及传统的...

    sqlldr工具的介绍

    本文将基于实际操作经验,详细介绍SQL*Loader的使用方法及其注意事项。 #### 二、使用场景与优势 - **使用场景**:当需要将大量数据从外部文件(如文本文件、Excel等)导入到Oracle数据库中时,SQL*Loader是非常...

    sqluldr2.zip

    本文将详细介绍sqluldr2工具及其在32位和64位操作系统上的使用方法。 首先,sqluldr2是SQL*Loader的一个轻量级版本,尤其适用于快速导出数据到CSV格式,便于数据分析和报表生成。它支持Windows和Linux平台,这可以...

Global site tag (gtag.js) - Google Analytics