######################################      sqlldr数据加载工具的学习总结

sqlldr是oracle7以来一直比较流行的数据加载工具,使用方便,灵活,在windows界面下是SQLLDR,linux/unix 平台大小写敏感,是sqlldr

有关sqlldr的五个文件:
1.控制文件:顾名思义该文件负责控制加载数据的关键信息,其中重要参数如下:
  LOAD DATA 控制文件一般都是以此开头,用来表示加载数据,默认的不用加任何参数,参数主要有UNRECOVER和RECOVER用来控制所加载数据是否可以恢复,也可以为CONTINUE_LOAD表示继续加载
  INFILE 表示要加载的数据文件的位置,若为*表示该数据文件写在该控制文件内部
  INTO TABLE 表示要加载数据的目标表,加载方式有以下几种:
INSERT INTO 向表中插入数据,该方式表必须为空表
APPEND INTO 向表中追加数据
REPLACE INTO 替换表中的数据,等于将表的数据delete后再向表中添加数据
TRUNCATE INTO 以truncate的方式将表中的数据清空后加载数据
  FIELDS TERMINATED BY "," 指定加载数据的分隔值,此处认为是,分割
  (NAME,SEX,AGE)要加入的表中的列名
  BEGINDATA 表示以下是要加载的数据,INFILE为*时参数才用得到
2.数据文件
  数据文件为要加载的数据存储文件,格式不统一
3.日志文件
  默认情况下加载数据完成后会在控制文件同目录下生成一个扩展名为.log的日志文件,用来记录数据加载情况
4.错误文件
  在sqlldr加载数据时遇到加载错误的数据,会把加载错误的数据写入同名下扩展名为.bad的错误文件中。该参数可以自行修改
5.废弃文件
  如果有需求,可以显示的制定废弃数据(不需要加载的数据)写入到一个扩展名为.dsc的废弃文件中,该文件需要特殊制定,默认情况下不会产生

一个简单的sqlldr的控制文件:
[oracle@orcl2 myscript]$ pwd
/u01/myscript

在/u01/myscript下做sqlldr的练习,写入sqlldr1.ctl如下内容

LOAD DATA

INFILE *   //为*说明我要加载的数据就在该控制文件内
INTO TABLE BONUS //将数据加载到bouns表中
FIELDS TERMINATED BY "," //分割符用的是,
(ENAME,JOB,SAL) //制定要加载到表中的列名

BEGINDATA //以下部分为要加载的数据
TOM,EMP,100
LALY,EMP,110
TOKE,EMP,120
JONE,EMP,130
JECL,MGR,140
JECK,HR,150
KULI,MGR,160

以scott用户创建bonus表结构
SQL> conn scott/oracle
Connected.
SQL> create table bonus(ENAME varchar(20),JOB varchar(15),SAL number);

Table created.

开始加载数据:
[oracle@orcl2 myscript]$ sqlldr scott/oracle control=sqlldr1.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Tue Nov 19 10:21:58 2013

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

Commit point reached - logical record count 8

数据加载完毕,查看通目录下的文件:
[oracle@orcl2 myscript]$ ls
sqlldr1.ctl  sqlldr1.log
发现多出了一个.log文件,没有.bad文件和.dsc文件说明此次加载数据无任何的错误

在scott用户下查看表中的数据信息
SQL> select * from bonus;

ENAME                JOB                    SAL
-------------------- --------------- ----------
TOM                  EMP                    100
LALY                 EMP                    110
TOKE                 EMP                    120
JONE                 EMP                    130
JECL                 MGR                    140
JECK                 HR                     150
KULI                 MGR                    160

7 rows selected.
发现7条数据已完全加载如表中

从excel表中向数据库导入数据:

拿到一个excel表格,首先复制一份表格出来,以下操作均在备份表格中,以防原数据损坏


得到复制excel表格后,将其列头和无关数据删除后,点击文件->另存为->保存类型选择csv(次格式的表格可以用记事本打开,数据间用的是逗号分隔符),以记事本打开刚保存的csv的表格即得到你要的数据,此处我所得到的测试数据如下:
USER1,EMP,100
USER2,EMP,101
USER3,EMP,102
USER4,EMP,103
USER5,EMP,104
USER6,EMP,105
USER7,MGR,106
USER8,MGR,107
USER9,HR,108

编辑名为sqlldr2.ctl的控制文件:
LOAD DATA
INFILE sqlldr2.dat       //指定加载的数据文件路径
APPEND INTO TABLE BONUS
FIELDS TERMINATED BY ","
(ENAME,JOB,SAL)
注:若要加载数据中含有自己指定的分隔符,可以在FIELDS TERMINATED BY ","后加上OPTIONALLY ENCLOSED BY '"'指定"为定界符
图目录下编辑名为sqlldr2.dat的数据文件,加入刚才得到的逗号分隔符的数据
USER1,EMP,100
USER2,EMP,101
USER3,EMP,102
USER4,EMP,103
USER5,EMP,104
USER6,EMP,105
USER7,MGR,106
USER8,MGR,107
USER9,HR,108
开始加载数据:
[oracle@orcl2 sqlldr2]$ sqlldr scott/oracle control=sqlldr2.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Tue Nov 19 10:45:40 2013

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

Commit point reached - logical record count 9
查看表中数据是否添加成功
SQL> select * from bonus;

ENAME                JOB                    SAL
-------------------- --------------- ----------
TOM                  EMP                    100
LALY                 EMP                    110
TOKE                 EMP                    120
JONE                 EMP                    130
JECL                 MGR                    140
JECK                 HR                     150
KULI                 MGR                    160
USER1                EMP                    100
USER2                EMP                    101
USER3                EMP                    102
USER4                EMP                    103

ENAME                JOB                    SAL
-------------------- --------------- ----------
USER5                EMP                    104
USER6                EMP                    105
USER7                MGR                    106
USER8                MGR                    107
USER9                HR                     108

16 rows selected.

加载无分隔符的数据

导出测试数据
SQL> set linesize 60
SQL> set feedback off
SQL> set heading off
SQL> spool /u01/myscript/sqlldr3/sqlldr3.dat
SQL> select * from bonus;
TOM                  EMP                    100
LALY                 EMP                    110
TOKE                 EMP                    120
JONE                 EMP                    130
JECL                 MGR                    140
JECK                 HR                     150
KULI                 MGR                    160
USER1                EMP                    100
USER2                EMP                    101
USER3                EMP                    102
USER4                EMP                    103
USER5                EMP                    104
USER6                EMP                    105
USER7                MGR                    106
USER8                MGR                    107
USER9                HR                     108
SQL> spool off
SQL> set heading on
SQL> set feedback on

查看导出结果
[oracle@orcl2 sqlldr3]$ cat sqlldr3.dat 
SQL> select * from bonus;
TOM                  EMP                    100             
LALY                 EMP                    110             
TOKE                 EMP                    120             
JONE                 EMP                    130             
JECL                 MGR                    140             
JECK                 HR                     150             
KULI                 MGR                    160             
USER1                EMP                    100             
USER2                EMP                    101             
USER3                EMP                    102             
USER4                EMP                    103             
USER5                EMP                    104             
USER6                EMP                    105             
USER7                MGR                    106             
USER8                MGR                    107             
USER9                HR                     108       
将首行的SQL语句删除 
将原表中的数据删除
SQL> truncate table bonus;

Table truncated.

SQL> select * from bonus;

no rows selected

编写控制文件sqlldr3.ctl内容如下:
LOAD DATA
INFILE sqlldr3.dat
TRUNCATE INTO TABLE BONUS
(
ENAME POSITION(1:15),     //指定截取从第一个字符开始到第十五个结束,其间的字符作为ENAME加载到数据库,下同
JOB POSITION(22:40),
SAL POSITION(44:60)
)
导入数据:
[oracle@orcl2 sqlldr3]$ sqlldr scott/oracle control=sqlldr3.ctl

SQL*Loader: Release 10.2.0.1.0 - Production on Tue Nov 19 11:27:22 2013

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

Commit point reached - logical record count 16
[oracle@orcl2 sqlldr3]$ ls
sqlldr3.ctl  sqlldr3.dat  sqlldr3.log

查看数据导入情况

SQL> select * from bonus;

ENAME                JOB                    SAL
-------------------- --------------- ----------
TOM                  EMP                    100
LALY                 EMP                    110
TOKE                 EMP                    120
JONE                 EMP                    130
JECL                 MGR                    140
JECK                 HR                     150
KULI                 MGR                    160
USER1                EMP                    100
USER2                EMP                    101
USER3                EMP                    102
USER4                EMP                    103

ENAME                JOB                    SAL
-------------------- --------------- ----------
USER5                EMP                    104
USER6                EMP                    105
USER7                MGR                    106
USER8                MGR                    107
USER9                HR                     108

16 rows selected.

16行数据完全导入成功!

未完待续。。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-776950/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29320885/viewspace-776950/

sqlldr的学习与总结相关推荐

  1. sqlldr,将数据批量导入Oracle数据库

    哈喽,大家好,今天分享一个如何把文本数据快速导入到Oracle数据库的一个方法. 首先介绍一下sqlldr工具,它是由Oracle提供,专本用于把文本数据导入到Oracle数据库.它需要两个文件,一个 ...

  2. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  3. oracle 测试sql执行时间_从 TPCH 测试学习性能优化技巧

    一. 目标 TPCH是由TPC(Transaction Processing Performance Council)事务处理性能委员会公布的一套针对数据库决策支持能力的测试基准,通过模拟数据库中与业 ...

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

    前言 最近做项目的时候需要导入一批3000多万条的POI数据到Oracle数据库,简单的插入导入速度太慢,使用sqlldr 批量导入3000多万条数据花了20分钟左右,速度还可以,现在分享给大家,具体 ...

  5. oracle中loder,Oracle Sql Loader的学习使用

    最近由于遇到oracle控制文件的使用,虽然不是很复杂,但是从来没有用过,专门花点时间看看.点击 1,概述: Sql Loader: 一个批量工具,将文件数据导入到数据库.可以导入一个表或者多个表,甚 ...

  6. Oracle 12warehouse,warehouse提供的免费oracle学习视频

    好多朋友告诉我自学oracle时间太长,精力有限,不能长时间坚持,所以很容易放弃...没错,学习oracle确实需要制定一个长期的计划,为了缩短大家的学习时间,能够尽可能在短的时间内掌握oracle的 ...

  7. oracle odu,【学习笔记】Oracle恢复工具ODU使用笔记 紧急恢复数据库的详细步骤

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库紧急恢复工具ODU的使用案例,在紧急恢复下对Oracle数据库进行数据抽取的详细过程. 本站文章除注明转载外,均为本站原创: 转载 ...

  8. oracle goldengate学习笔记,Oracle GoldenGate 学习教程

    二.配置和使用 阅读导航 配置和使用GoldenGate的步骤 1 配置数据库支持GoldenGate 1.1 OGG用户和权限分配 1.2 数据库附加日志 1.2.1 数据库级别的附加日志 1.2. ...

  9. linux java sqlldr_java sqlldr使用

    前提:安装了oracle客户端. 在"开始"->"运行",输入"cmd",回车.在打开的dos窗口里输入:sqlldr.看看是否安装了 ...

最新文章

  1. 用Flash创建一个类似Nano War游戏的教程
  2. 2_1_6 递归与分治策略(汉诺塔问题)
  3. 从零搭建Prometheus监控报警系统
  4. ThreadLocal在Spring中的应用
  5. P2870 [USACO07DEC]Best Cow Line G
  6. 纯css实现DIV以及图片水平垂直居中兼容多种浏览器(实现过程)
  7. mysql按域排序_如何在MySQL中对域名进行排序?
  8. linux 认证 转发,一种基于Linux系统实现路由器的portal认证报文转发方法和装置
  9. freemarker加载模板目录的方法
  10. SQL注入之MYSQL注入
  11. 如何在 HTML 中将表格居中
  12. iphone来电铃声小 - MTK物联网在线解答 - 技术论坛
  13. 信创云元年,易捷行云EasyStack发布新一代全栈信创云
  14. 三分钟快速了解typeScript 类
  15. OpenGL总结6-圆柱纹理贴图
  16. 中国第一台103型电子计算机诞生于,第一台计算机诞生于几年?
  17. 线性规划之二 —— 单纯形算法(详解)
  18. 实力悍将联想Z5s发布1398元起售,2019超旗舰Z5 Pro GT 855版惊世降临
  19. 【知识】太阳能板行业生产加工步骤(超详细)
  20. css的论文,css

热门文章

  1. vue-baidu-map百度地图搜索功能,点击进行标点,获取经纬度坐标,百度地图使用黑色主题
  2. 微信订阅号之连接服务器
  3. Matlab中的diag函数用法
  4. python负数取模_负数的取模运算
  5. 网络数据安全法解读第三篇
  6. Luogu 4844 LJJ爱数数
  7. 去哪儿网上海景点数据爬虫分析
  8. Probabilistic Embeddings with Laplacian Graph Priors
  9. 维度、度量、指标概念
  10. Python常用标准库(一)