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

[经验分享] ORACLE导入TXT文件数据的解决思路

[复制链接]

尚未签到

发表于 2018-9-15 07:44:04 | 显示全部楼层 |阅读模式
[INFO] 2012-12-01 00:01:17 1610 FHR "行号=24. 查看指定计划的钢卷数据. 计划号=121200102."  
[INFO] 2012-12-01 00:03:13 1610 FHR "行号=24. 查看指定计划的钢卷数据. 计划号=121200103."
  
[INFO] 2012-12-01 00:20:21 7362 RICC "IntervalTime=0,RollingTime=0"
  
[INFO] 2012-12-01 00:20:21 7363 RICC "WRTFMOff:   24.5,   24.8,   24.9,   25.1,   25.3,   25.3,   25.4,   26.5[C]."
  
[INFO] 2012-12-01 00:20:21 7362 RICC "IntervalTime=0, RollingTime=0, WRTFMOff:fT=24.632685"
  拿到这一份源数据后,第一眼我们看到像这种类型的数据就是应该使用sql*loader工具。把该源文件的数据导入到oracle数据库。
  那么,我们先来熟悉一下这个工具:
  一、sql*loader的概述
  很多情况之下,我们的数据需要批量处理传输到库,或者在库之间批量传输数据。其中,常见
  的情形是用从事务处理系统提取的数据填充数据仓库,或将数据从实时系统复制到测试开发环境。对
  大规模操作而言,使用标准的INSERT语句插入数据并不总是最佳方式,而oracle本身附带了SQL*Loader和Data Pump功能来支持批量操作。通过使用外部表,还可以在不将数据插入数据库的情况下读取数据。
  从体系结构上讲,SQL*Loader进程与其他用户进程类似:它通过服务器进程连接到数据库。
  要插入行,可以采用两种技术:常规方式或直接路径读取。常规方式是使用INSERT。SQL*Loader用户进程构造values子句中包含绑定变量的insert语句,然后读取源数据文件,为每一个要插入的行执行
  一次insert。此方法使用数据库缓冲区缓存,并生成撤销(undo)和重做数据(redo log),这些insert
  语句与其他同类语句相似,通过普通的提交处理实现数据永久化。
  直接路径是避开了database buffer,sql*loader读取源数据文件,并将内容发送到服务器进程。
  此后,服务器进程在其PGA中组装表数据中的块,并将它们直接写入数据文件。写操作在表的高水位
  线上完成,称为数据保存(data save)。高水位线是表段中的一个标记,其上未写入任何数据:高水
  位线上的空间是分配给尚未使用的表的空间。加载完成后,sql*loader移动高水位线,从而包含最新
  写入的数据块,并且其他用户都可以立即看见这些数据块内的行。上述操作相当于一个commit命令。
  此时不会生成撤销,也可以主动的取消重做日志的生成。所以说,直接路径加载是很快捷的。
  二、SQL*Loader直接路径缺点
  直接路径也存在以下缺点:
  1、执行操作期间,必须删除或禁用引用完整性约束(只能实施unique、primary key、not null约束)。
  2、会将针对其他会话的DML锁定表
  3、不会激活insert触发器
  4、无法为群集表使用
  sql*loader体系结构:
DSC0000.jpg

  三、实际操作演示
  好了,这里没办法说得太细节化,相关的知识大家自己补充。
  新建一个测试表TEST(我们要把源数据导入这个表):
  SQL>conn hr/oracle@testdb
  SQL> create table test(
  2  name varchar2(10),
  3  indate varchar2(20),
  4  intime varchar2(20),
  5  num int,
  6  source varchar2(10),
  7  description varchar2(128)
  8  );
  准备好data.txt、data_test.ctl(加载所要使用的控制文件,定义数据规则的)
  data_test.ctl:
LOAD DATA  
INFILE "E:\oracle\exercises\data.txt"
  
TRUNCATE INTO TABLE TEST
  
FIELDS TERMINATED BY " " optionally enclosed by '"'
  
(NAME,INDATE,INTIME,NUM,SOURCE,DESCRIPTION)



运维网声明 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-583101-1-1.html 上篇帖子: oracle 11.2 控制文件还原 下篇帖子: Mybatis调用Oracle的存储过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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