`

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

    涉及sqlldr的参数说明和常见应用

    sqlldr_所有命令及用法

    3.7. 使用函数装载 20 3.7.1. 控制文件 20 3.7.2. 装载结果 21 3.8. 多文件多表装载 21 3.8.1. 控制文件 22 3.8.2. 数据文件 22 3.8.3. 装载结果 23 3.9. 默认值装载 23 3.9.1. 控制文件 23 3.9.2. 数据文件 24 ...

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

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

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

    SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)

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

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

    精简版客户端,仅包含sqlplus、sqlldr、exp、imp等几个简单常用的命令,所以体量非常小,轻便实用,居家必备,亲试可用,而且现在正在使用,环境变量配置方法和客户端一样。

    Oracle批量导入文本文件快速的方法(sqlldr实现)

    最近做项目的时候需要导入一批3000多万条的POI数据到Oracle数据库,简单的插入导入速度太慢,使用sqlldr 批量导入3000多万条数据花了20分钟左右,速度还可以,现在分享给大家,具体方法如下: 1.新建导入控制文件 ...

    Oracle数据库使用SQL_Loader导入外部数据的方法详解

    Oracle数据库使用SQL_Loader导入外部数据的方法详解,详细讲解 sqlldr的使用

    sql loader详解

    SQL*LOADER是oracle的数据加载工具,在NT下sql*loader的命令为SQLLDR,在UNIX...它是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(direct,parallel)。但这种方法要求存储数据的oracle表是已经存在的。

    sqluldr2(windows+linux 32+64)

    使用方法  1、首先将sqluldr2.exe复制到执行目录下,即可开始使用  2、查看help 帮助 sqluldr2 官方下载  3、执行数据导出命令  3.1、常规导出  sqluldr2 test/test@127.0.1.1/orcl query="select * from ...

    linux系统oracle数据库出现ora12505问题的解决方法

    主要介绍了linux系统oracle数据库出现ora12505问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

    1.1 我的方法 2 1.2 黑盒方法 4 1.3 开发数据库应用的正确(和不正确)方法 8 1.3.1 了解Oracle体系结构 8 1.3.2 理解并发控制 14 1.3.3 多版本 19 1.3.4 数据库独立性? 25 1.3.5 “怎么能让应用运行得更快?...

    sqlloadr批量入库技巧

    sqlloadr批量入库技巧,有代码和描述

    word源码java-DevelopNote:Java开发过程中总结的技术文档,已经同步发布到简书,CSDN,新浪博客等

    word源码java ...Oracle数据库导入csv文件(sqlldr命令行).txt | |-- Oracle数据库用法汇总.txt | |-- Pictures | |-- PostgreSQL常用SQL.txt | |-- PostgreSQL客户端psql常用命令.txt | |-- PostgreSQL

    Oracle数据库实验操作

    实验67:使用sqlldr加载外部的数据 143 实验68:使用utl_file包来将表的数据存储到外部文件 144 实验69:使用外部表 145 实验70:处理挂起的事务 146 索引 149 实验71:查看索引的内部信息 151 实验72:监控索引的...

    Oracle编程艺术

    1.1 我的方法................................................................................ 63 3 / 976 1.2 黑盒方法................................................................................ 65 ...

Global site tag (gtag.js) - Google Analytics