【发布时间】:2010-11-26 04:43:54
【问题描述】:
我从 sql loader 得到以下日志消息。此消息是否“未加载行,因为所有 WHEN 子句均失败。”一个真正的错误? 最后我有一条日志消息说总记录读取为 74256。在 ctl 控制文件中,我看到每行记录类型的 38-39 字符 并基于它我将插入到不同的表中。
Table TEST1_AA:
42233 Rows successfully loaded.
0 Rows not loaded due to data errors.
32023 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Table IIR_TEST2_BB:
0 Rows successfully loaded.
0 Rows not loaded due to data errors.
74256 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Table IIR_TEST3_CC:
31 Rows successfully loaded.
0 Rows not loaded due to data errors.
74225 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Total logical records skipped: 0
Total logical records read: 74256
Total logical records rejected: 0
Total logical records discarded: 1
示例 CTL 文件
选项(错误=9999999999,静音=(反馈),行=1000)
加载数据
进入表test_HD
追加
当 (038:039) = 'HD'
(
record_sequence_no POSITION(029:037) DECIMAL EXTERNAL
,line_type POSITION(040:040) CHAR
,header_record_type POSITION(041:041) CHAR
,enquiry_telephone_number POSITION(042:052) CHAR
,total_amt_last_bill POSITION(053:066) 十进制外部
,total_payment_received POSITION(067:080) 十进制外部
)
进入表test_AS
追加
当 (038:039) = 'AS'
(
record_sequence_no POSITION(029:037) DECIMAL EXTERNAL
,line_type POSITION(040:040) CHAR
,girn POSITION(041:047) CHAR
,charge_desc POSITION(048:077) CHAR
}
【问题讨论】:
-
也许如果您发布了一个未加载的记录样本、您认为它们应该发生的事情以及您的控制文件的相关部分,您可能会得到一个有用的响应。据我所见,您有一个包含 74256 条记录的源文件,其中一些被加载到一个表中,其中一些被加载到另一个表中。我实际上没有看到任何问题。
-
显然您的控制文件中有一个 WHEN 子句,因此您应该发布该控制文件和一些被跳过的行(正如 Gary 已经提到的)
-
更多猜测......但更新您的 when 语句以包含一个“else”子句,以便脚本知道在 when 语句中的任何条件都不满足的情况下该怎么做。
-
对延迟回复表示歉意。粘贴了一个示例 ctl 文件。不确定“行未加载,因为所有 WHEN 子句均失败”是错误消息
标签: sql oracle plsql sql-loader