问题描述
Oracle数据库12c企业版版本12.1.0.2.0-64位生产
我正在使用以下代码来创建外部表。
文件包含13080记录。13070记录被加载到外部表中。
只有一条被拒绝的记录被加载到外部表的坏文件中。为什么?我在等10点。
数据看起来不错,并且与数据类型和长度匹配。如何识别确切原因?
我感谢所有专家的任何建议/帮助。
我正在使用以下代码来创建外部表。
V_SQL := 'CREATE TABLE ' || L_EXT_TABLE || ' (' || L_CNAMES || ') ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY ' || P_DIR || ' ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE CHARACTERSET WE8MSWIN1252 BADFILE ''' || L_EXT_TABLE || '.bad'' ' || CASE WHEN P_NOLOG THEN ' NOLOGFILE ' ELSE 'LOGFILE '''||L_EXT_TABLE||'.log''' END || ' SKIP ' || P_IGNORE_HEADERLINES || ' FIELDS TERMINATED BY ''' || P_DELIMITER || ''' LDRTRIM MISSING FIELD VALUES ARE NULL ) LOCATION( ''' || P_FILENAME || ''') ) REJECT LIMIT UNLIMITED;复制
文件包含13080记录。13070记录被加载到外部表中。
只有一条被拒绝的记录被加载到外部表的坏文件中。为什么?我在等10点。
数据看起来不错,并且与数据类型和长度匹配。如何识别确切原因?
我感谢所有专家的任何建议/帮助。
专家解答
我添加了一些缺失值,因此我们可以有一个 * 测试用例 * 并且无法重现您的发现,例如
所以我们需要看到一个从上到下的测试用例。
SQL> host cat c:\temp\xxx.dat 1,2,3 1,2,3 1,2,3 1,2,3 z,z,z w,s,s q,q,q s,s,s SQL> set serverout on SQL> declare 2 l_ext_table varchar2(10) := 'mytab'; 3 L_CNAMES varchar2(100) := 'c1 number,c2 number,c3 number'; 4 P_DIR varchar2(10) := 'TEMP'; 5 P_NOLOG boolean := false; 6 P_IGNORE_HEADERLINES varchar2(10) := '1'; 7 P_DELIMITER varchar2(10) := ','; 8 P_FILENAME varchar2(10) := 'xxx.dat'; 9 v_sql varchar2(1000); 10 begin 11 12 V_SQL := 'CREATE TABLE ' || L_EXT_TABLE || ' (' || L_CNAMES || ') 13 ORGANIZATION EXTERNAL ( 14 TYPE ORACLE_LOADER 15 DEFAULT DIRECTORY ' || P_DIR || ' 16 ACCESS PARAMETERS( 17 RECORDS DELIMITED BY NEWLINE CHARACTERSET WE8MSWIN1252 18 BADFILE ''' || L_EXT_TABLE || '.bad'' 19 ' || CASE WHEN P_NOLOG THEN ' NOLOGFILE ' ELSE 'LOGFILE '''||L_EXT_TABLE||'.log''' END || ' 20 SKIP ' || P_IGNORE_HEADERLINES || ' FIELDS TERMINATED BY ''' || P_DELIMITER || ''' LDRTRIM 21 MISSING FIELD VALUES ARE NULL 22 ) 23 LOCATION( ''' || P_FILENAME || ''') 24 ) 25 REJECT LIMIT UNLIMITED'; 26 27 dbms_output.put_line(v_sql); 28 end; 29 / CREATE TABLE mytab (c1 number,c2 number,c3 number) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY TEMP ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE CHARACTERSET WE8MSWIN1252 BADFILE 'mytab.bad' LOGFILE 'mytab.log' SKIP 1 FIELDS TERMINATED BY ',' LDRTRIM MISSING FIELD VALUES ARE NULL ) LOCATION( 'xxx.dat') ) REJECT LIMIT UNLIMITED PL/SQL procedure successfully completed. SQL> CREATE TABLE mytab (c1 number,c2 number,c3 number) 2 ORGANIZATION EXTERNAL ( 3 TYPE ORACLE_LOADER 4 DEFAULT DIRECTORY TEMP 5 ACCESS PARAMETERS( 6 RECORDS DELIMITED BY NEWLINE CHARACTERSET WE8MSWIN1252 7 BADFILE 'mytab.bad' 8 LOGFILE 'mytab.log' 9 SKIP 1 FIELDS TERMINATED BY ',' LDRTRIM 10 MISSING FIELD VALUES ARE NULL 11 ) 12 LOCATION( 'xxx.dat') 13 ) 14 REJECT LIMIT UNLIMITED 15 / Table created. SQL> select * from mytab; C1 C2 C3 ---------- ---------- ---------- 1 2 3 1 2 3 1 2 3 3 rows selected. SQL> select * from mytab; C1 C2 C3 ---------- ---------- ---------- 1 2 3 1 2 3 1 2 3 3 rows selected. SQL> host cat c:\temp\mytab.bad z,z,z w,s,s q,q,q s,s,s复制
所以我们需要看到一个从上到下的测试用例。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
533次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
503次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
412次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
411次阅读
2025-04-08 09:12:48
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
396次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
394次阅读
2025-04-01 11:08:44
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
353次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
353次阅读
2025-04-08 23:57:08
oracle定时任务常用攻略
virvle
321次阅读
2025-03-25 16:05:19
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
320次阅读
2025-04-15 14:48:05