设为首页 收藏本站
查看: 675|回复: 0

[经验分享] Oracle sql loader使用速成

[复制链接]

尚未签到

发表于 2018-9-11 10:48:25 | 显示全部楼层 |阅读模式
   oracle sql loader
  Oracle SQL LOADER是Oracle的数据加载工具,用来将固定格式的文本文件中数据加载到Oracle数据库中。它提供了最快捷的加载途径(direct / parallel),是大数据快速加载的完美工具。在数据仓库应用中用得较多。我们介绍一下它的速成使用方法,快速掌握它。
  一、确定加载文件内容格式和文件的字符集编码
  导入的文本文件有以txt或csv为后缀名的,它的编码方式通常有gb2312和utf8两种。
  例如,csv文件的内容格式如下所示:
  Csv代码  http://blog.51cto.com/songzhaoxiang/%5C

  •   "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的内容如下:
  Ctl代码  http://blog.51cto.com/songzhaoxiang/%5C

  •   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,实现数据快速加载。
  Cmd代码  http://blog.51cto.com/songzhaoxiang/%5C

  •   sqlldr scott/tiger@elvdb_11g control=d:\\bb_11g.ctl log=d:\\dd_11g.log
  在执行结束后,记住去检查log文件。日志文件会显示加载的详细信息。
  Log代码  http://blog.51cto.com/songzhaoxiang/%5C

  •   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爱莫能助。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-571903-1-1.html 上篇帖子: Oracle数据库物理文件备份/恢复 下篇帖子: Oracle Study之--Oracle等待事件(6)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表