问题描述
嗨,汤姆,
我有一个具有以下结构的文件:
我想将数据从此文件加载到具有外部表的Oracle表中。一切都很好,直到第三行。在最后一个字段,外部表拒绝它。可能导致此字段在de数据中有换行符,字符数高于4000。
我也用CLOB尝试过,但它也拒绝了第三行。两次尝试都失败了,请问该如何解决?
问候,
曾伟
我有一个具有以下结构的文件:
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= 2017-03-01 16:17:08 : INFO : (65193 | WRITER_1_*_1) : (IS | SYSTEM 123) : testnode01_abc_12 : WRT_8167 : Start loading table [table_x] at: Wed Mar 01 16:17:08 2017 2017-03-01 16:17:08 : INFO : (65193 | WRITER_1_*_1) : (IS | SYSTEM 123) : testnode01_abc_12 : WRT_8168 : End loading table [table_x] at: Wed Mar 01 16:17:08 2017 2017-03-01 16:17:08 : INFO : (65193 | WRITER_1_*_1) : (IS | SYSTEM 123) : testnode01_abc_12 : WRT_8035 : Load complete time: Wed Mar 01 16:17:08 2017 LOAD SUMMARY ============ WRT_8036 Target: TMP_F_BASISPROCES_ID_ONDERZOEK (Instance Name: [TMP_F_BASISPROCES_ID_ONDERZOEK]) WRT_8044 No data loaded for this target WRT_8036 Target: D_ID_OND_ACTIVITEIT_GROEP (Instance Name: [D_ID_OND_ACTIVITEIT_GROEP]) WRT_8044 No data loaded for this target 2017-03-01 16:17:08 : INFO : (65193 | WRITER_1_*_1) : (IS | SYSTEM 123) : testnode01_abc_12 : WRT_8043 : *****END LOAD SESSION***** +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=复制
我想将数据从此文件加载到具有外部表的Oracle表中。一切都很好,直到第三行。在最后一个字段,外部表拒绝它。可能导致此字段在de数据中有换行符,字符数高于4000。
我也用CLOB尝试过,但它也拒绝了第三行。两次尝试都失败了,请问该如何解决?
问候,
曾伟
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+'=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= drop table inf_logs -- attempt 1 CREATE TABLE inf_logs ( TEXT01 VARCHAR2(4000) , TEXT02 VARCHAR2(4000) , TEXT03 VARCHAR2(4000) , TEXT04 VARCHAR2(4000) , TEXT05 VARCHAR2(4000) , TEXT06 VARCHAR2(4000) , TEXT07 VARCHAR2(4000) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY DIRLOGS ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ' : ' ) LOCATION ('file_log.TXT') ) PARALLEL 5 REJECT LIMIT UNLIMITED; +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= CREATE TABLE informatica_logs2 ( TEXT01 VARCHAR2(4000) , TEXT02 VARCHAR2(4000) , TEXT03 VARCHAR2(4000) , TEXT04 VARCHAR2(4000) , TEXT05 VARCHAR2(4000) , TEXT06 VARCHAR2(4000) , TEXT07 CLOB ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY DIRLOGS ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ' : ' NOTRIM ( TEXT01 CHAR, TEXT02 CHAR, TEXT03 CHAR, TEXT04 CHAR, TEXT05 CHAR, TEXT06 CHAR, TEXT07 CHAR(10000) ) ) LOCATION ('file_log.TXT') ) PARALLEL 5 REJECT LIMIT UNLIMITED; +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=复制
专家解答
因此,在阅读不以日期开头的行 (加载摘要等) 时,您遇到了问题?
如果是这样,问题不在于它们是CLOBs。这是Oracle数据库将每个处理为单独的行。因此,每行没有足够的冒号来匹配您定义的列。您可以通过使用 “缺少字段值为null” 子句来解决此问题:
如果您希望 “加载摘要” 部分中的所有内容都是一行,则需要具有与newline不同的分隔符。
如果是这样,问题不在于它们是CLOBs。这是Oracle数据库将每个处理为单独的行。因此,每行没有足够的冒号来匹配您定义的列。您可以通过使用 “缺少字段值为null” 子句来解决此问题:
CREATE TABLE inf_logs ( TEXT01 VARCHAR2(4000) , TEXT02 VARCHAR2(4000) , TEXT03 VARCHAR2(4000) , TEXT04 VARCHAR2(4000) , TEXT05 VARCHAR2(4000) , TEXT06 VARCHAR2(4000) , TEXT07 VARCHAR2(4000) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY tmp ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ' : ' missing field values are null ) LOCATION ('test.txt') ) PARALLEL 5 REJECT LIMIT UNLIMITED; select * from inf_logs; TEXT01 TEXT02 TEXT03 TEXT04 TEXT05 TEXT06 TEXT07 2017-03-01 16:17:08 INFO (65193 | WRITER_1_*_1) (IS | SYSTEM 123) testnode01_abc_12 WRT_8167 Start loading table [table_x] at: Wed Mar 01 16:17:08 2017 2017-03-01 16:17:08 INFO (65193 | WRITER_1_*_1) (IS | SYSTEM 123) testnode01_abc_12 WRT_8168 End loading table [table_x] at: Wed Mar 01 16:17:08 2017 2017-03-01 16:17:08 INFO (65193 | WRITER_1_*_1) (IS | SYSTEM 123) testnode01_abc_12 WRT_8035 Load complete time: Wed Mar 01 16:17:08 2017 LOAD SUMMARY ============ WRT_8036 Target: TMP_F_BASISPROCES_ID_ONDERZOEK (Instance Name: [TMP_F_BASISPROCES_ID_ONDERZOEK]) WRT_8044 No data loaded for this target WRT_8036 Target: D_ID_OND_ACTIVITEIT_GROEP (Instance Name: [D_ID_OND_ACTIVITEIT_GROEP]) WRT_8044 No data loaded for this target 2017-03-01 16:17:08 INFO (65193 | WRITER_1_*_1) (IS | SYSTEM 123) testnode01_abc_12 WRT_8043 *****END LOAD SESSION***** 17 rows selected复制
如果您希望 “加载摘要” 部分中的所有内容都是一行,则需要具有与newline不同的分隔符。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1462次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
893次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
543次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
498次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
427次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
372次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
320次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
296次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
267次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
267次阅读
2025-03-19 14:41:51