Oracle SQL LOADER是Oracle的数据加载工具,用来将固定格式的文本文件中数据加载到Oracle数据库中。它提供了最快捷的加载途径(direct / parallel),是大数据快速加载的完美工具。在数据仓库应用中用得较多。我们介绍一下它的速成使用方法,快速掌握它。
(miki西游 @mikxiyou 原文链接: http://mikixiyou.iteye.com/blog/1738885
)
一、确定加载文件内容格式和文件的字符集编码
导入的文本文件有以txt或csv为后缀名的,它的编码方式通常有gb2312和utf8两种。
例如,csv文件的内容格式如下所示:
"admin","55de42146747ea457c2bab5064b7019c","webmastor@yourdomain.com","d0d8e1"
"huangomeng","2bdca6d6a6cb20f1f2483d0a9d13e621","huangomeng@163.com","145288"
"乐友","ee39f6b01424c1408d17d027da0b85a1","zhnaeu@yahoo.cn","a2fb84"
"贝龙","894a14224560a9792f0a21673642e2cc","50187908@163.com","583815"
每个字段是双引号括上,字段之间以逗号分隔开。基本上csv的格式都是这样。
另外,还注意不同的编码字符集,gb2312和utf8等字符集之间的区别要记住。在写sqlldr控制文件时需要用到。
二、编写正确的数据加载控制文件
加载字符集ZHS16GBK的文本文件的控制文件bb_11g.ctl的内容如下:
LOAD DATA
CHARACTERSET ZHS16GBK
INFILE 'D:\uc_members_20121130.csv'
BADFILE 'D:\uc_members_20121130.bad'
DISCARDFILE 'D:\uc_members_20121130.dsc'
truncate
into table T_USER_INFO
(USERNAME CHAR terminated by ',' OPTIONALLY ENCLOSED BY '"' ,
PASSWD CHAR terminated by ',' OPTIONALLY ENCLOSED BY '"',
EMAIL CHAR terminated by ',' OPTIONALLY ENCLOSED BY '"' ,
SALT char terminated by whitespace OPTIONALLY ENCLOSED BY '"')
这里的字符集名称和数据库的字符集名称一致。如果字符集不匹配,在加载数据进入数据库后,你会发现中文或其他文件的都会是乱码。
如果数据库字符集是ALT32UTF8,那么需要将"CHARACTERSET ZHS16GBK"修改为"CHARACTERSET UTF8"。
字段分隔符说明:
terminated by x'09' ,指字段以X'09' -- 制表符(TAB)分隔
terminated by ',' ,指用逗号分隔
terminated by whitespace ,指结尾以空白分隔
三、使用sqlldr程序根据控制文件导入文本文件到数据库
在windows的cmd下执行sqlldr,实现数据快速加载。
sqlldr scott/tiger@elvdb_11g control=d:\bb_11g.ctl log=d:\dd_11g.log
在执行结束后,记住去检查log文件。日志文件会显示加载的详细信息。
SQL*Loader: Release 10.2.0.1.0 - Production on 星期五 11月 30 10:17:44 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
控制文件: D:/bb_11g.ctl
为全部输入指定了字符集 ZHS16GBK。
数据文件: D:\uc_members_20121130.csv
错误文件: D:\uc_members_20121130.bad
废弃文件: D:\uc_members_20121130.dsc
(可废弃所有记录)
要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续: 未作指定
所用路径: 常规
表 T_USER_INFO,已加载从每个逻辑记录
插入选项对此表 TRUNCATE 生效
列名 位置 长度 中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
USERNAME FIRST * , O (") CHARACTER
PASSWD NEXT * , O (") CHARACTER
EMAIL NEXT * , O (") CHARACTER
SALT NEXT * WHT O (") CHARACTER
表 T_USER_INFO:
1132907 行 加载成功。
由于数据错误, 0 行 没有加载。
由于所有 WHEN 子句失败, 0 行 没有加载。
由于所有字段都为空的, 0 行 没有加载。
为绑定数组分配的空间: 66048 字节 (64 行)
读取 缓冲区字节数: 1048576
跳过的逻辑记录总数: 0
读取的逻辑记录总数: 1132907
拒绝的逻辑记录总数: 0
废弃的逻辑记录总数: 0
从 星期五 11月 30 10:17:44 2012 开始运行
在 星期五 11月 30 10:18:23 2012 处运行结束
经过时间为: 00: 00: 39.22
CPU 时间为: 00: 00: 06.16
从日志文件中可以看到,加载110万条记录,只要39秒。如果有错误或废弃的记录,可以到对应的文件中去查看一下。
四、注意事项
1、导入的文本文件有时候会很大,使用文本编辑工具可能很难打开。可以尝试一下vi。
2、导入的目标表上最好没有主键,没有索引,没有约束,使用nologging设置尽量减少日志生成量。
3、导入的文本文件最好所有的格式都是字符串或数字。如果是时间,需要将它和NSL_DATE_FORMAT保持一致。
4、对于LOB字段,sqlldr爱莫能助。
分享到:
相关推荐
oracle sql loader全攻略,帮助你理解和用好oracle sql loader工具
oracle sql loader 用法详解
oracle sql loader的简单使用实例
oracle -sqlloader使用方法,适合初学者
oracle sqlloader 使用指南 数据装载
oracle sqlloader使用指南.doc
SQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.
NULL 博文链接:https://jxdwuao.iteye.com/blog/1704642
Oracle数据库使用SQL_Loader导入外部数据的方法详解,详细讲解 sqlldr的使用
本技术专题主要介绍如何使用Oracle SQL Developer和其他开发工具,内容包括使用Oracle Database Home Page、在Oracle中使用SQL*Plus、如何用SQL Developer来操作Oracle数据库以及表列定义等等。
sql * loader是oracle的数据加载工具,通常用来将操作系统迁移到oracle数据库中,
NULL 博文链接:https://m635674608.iteye.com/blog/1606527
oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...
OracleSQLDeveloper最全使用教程,教程有图片,全的很,敬请你的查看
与.bat脚本配合使用 load data infile 'C:\Users\yilin\Desktop\abc.txt' append into table FJH_TMP fields terminated by " " (A)
该文档是对Oracle开发的完全免费的SQL Developer软件的使用说明。
kettle快速加载到oracle之oracle批量加载-Oracle Bulk Loader
利用sqlloader将 excel 数据导出到 oracle 数据库中
ORACLE SQL性能优化系列 ORACLE SQL性能优化系列 ORACLE SQL性能优化系列
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。