问题描述
嗨,Oracle大师
我被分配了从文本文件 (例如myreport.txt) 加载数据到Oracle表的要求。
文本文件包含学生每个学科的标记数据集。
文件myreport.txt
--------
第十个标准结果
在2017年8月05日上宣布
学生-Ajay Kumar Roll No-123456学院-XYZ学校
Seq子标记
1 sup1 90
2 Sub2 87
3 Sub3 NA
4亚4钠
结果: 重考
学生-Vijay Kumar Roll No-123457学院-ABC学校
Seq子标记
1 sup1 90out of 100
2 Sub2 87out of 100
3 Sub3 70
4 Sub5 89
结果: 通过
学生-Manoj Kumar Roll No-123458学院-PQR学校
Seq子标记
1子40
2苏比50
3 SubZ 10
结果: 失败
-
假设我有一个带有列的表result_of_tenth_std
年份,学校,student_name,student_rollno,subject_seq,subject_name,标记,result_status (此col包含学生所有行的相同值)
问: 将这些数据从文件加载到数据库表的方法是什么?
我被分配了从文本文件 (例如myreport.txt) 加载数据到Oracle表的要求。
文本文件包含学生每个学科的标记数据集。
文件myreport.txt
--------
第十个标准结果
在2017年8月05日上宣布
学生-Ajay Kumar Roll No-123456学院-XYZ学校
Seq子标记
1 sup1 90
2 Sub2 87
3 Sub3 NA
4亚4钠
结果: 重考
学生-Vijay Kumar Roll No-123457学院-ABC学校
Seq子标记
1 sup1 90out of 100
2 Sub2 87out of 100
3 Sub3 70
4 Sub5 89
结果: 通过
学生-Manoj Kumar Roll No-123458学院-PQR学校
Seq子标记
1子40
2苏比50
3 SubZ 10
结果: 失败
-
假设我有一个带有列的表result_of_tenth_std
年份,学校,student_name,student_rollno,subject_seq,subject_name,标记,result_status (此col包含学生所有行的相同值)
问: 将这些数据从文件加载到数据库表的方法是什么?
专家解答
我会让你开始这个概念
a) 外部表以SQL的方式访问报表
请注意,字段可以有重叠-对于固定宽度定义,这很好
b) 使用文件行和last_value对学生行进行分组
a) 外部表以SQL的方式访问报表
SQL> CREATE TABLE rep 2 ( 3 LINE varchar2(1000), 4 student varchar2(180), 5 result varchar2(20) 6 ) 7 ORGANIZATION external 8 ( 9 TYPE oracle_loader 10 DEFAULT DIRECTORY temp 11 ACCESS PARAMETERS 12 ( 13 RECORDS DELIMITED BY NEWLINE 14 READSIZE 1048576 15 FIELDS LDRTRIM 16 MISSING FIELD VALUES ARE NULL 17 REJECT ROWS WITH ALL NULL FIELDS 18 ( 19 line (1:1000) char(1000), 20 student (9:200) char(180), 21 result (9:200) char(20) 22 ) 23 ) 24 location 25 ( 26 'report.txt' 27 ) 28 )REJECT LIMIT UNLIMITED 29 / Table created. SQL> select line from rep; LINE --------------------------------------------------------------- 10th standard results declared on 05 aug 2017 Student-Ajay Kumar Roll No-123456 College-XYZ School Seq Sub Marks 1 Sub1 90 2 Sub2 87 3 Sub3 NA 4 Sub4 NA Result: retake exam Student-Vijay Kumar Roll No-123457 College-ABC School Seq Sub Marks 1 Sub1 90 out of 100 2 Sub2 87 out of 100 3 Sub3 70 4 Sub5 89 Result: Passed Student-Manoj Kumar Roll No-123458 College-PQR School Seq Sub Marks 1 SubX 40 2 SubY 50 3 SubZ 10 Result: Failed复制
请注意,字段可以有重叠-对于固定宽度定义,这很好
b) 使用文件行和last_value对学生行进行分组
SQL> with t as ( 2 select rownum r, r.* from rep r 3 ) 4 select 5 last_value(case when line like 'Student%' then r end ignore nulls) over ( order by r ) student_row, 6 substr(student,1,instr(student,'Roll No')-1) student_name, 7 case when line like 'Result%' then result end result 8 from t 9 / STUDENT_ROW STUDENT_NAME RESULT ----------- ------------------------------------------------------------ -------------------- 3 Ajay Kumar 3 3 3 3 3 3 retake exam 10 Vijay Kumar 10 10 10 10 10 10 Passed 17 Manoj Kumar 17 17 17 17 17 Failed 22 rows selected.c) Grouping to bring the rows together
SQL> with t as ( 2 select rownum r, r.* from rep r 3 ), 4 extracted_fields as ( 5 select 6 last_value(case when line like 'Student%' then r end ignore nulls) over ( order by r ) student_row, 7 substr(student,1,instr(student,'Roll No')-1) student_name, 8 case when line like 'Result%' then result end result 9 from t 10 ) 11 select student_row, max(student_name) student_name, max(result) result 12 from extracted_fields 13 group by student_row 14 order by 1; STUDENT_ROW STUDENT_NAME RESULT ----------- ------------------------------------------------------------ -------------------- 3 Ajay Kumar retake exam 10 Vijay Kumar Passed 17 Manoj Kumar Failed
复制
所以你可以扩展这个来挑选你喜欢的任何领域
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
530次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
500次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
411次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
409次阅读
2025-04-08 09:12:48
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
392次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
391次阅读
2025-04-01 11:08:44
Oracle 19c RAC更换IP实战,运维必看!
szrsu
351次阅读
2025-04-08 23:57:08
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
345次阅读
2025-04-20 10:07:02
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
320次阅读
2025-04-15 14:48:05
oracle定时任务常用攻略
virvle
320次阅读
2025-03-25 16:05:19