【问题标题】:SQL Loader errorSQL 加载程序错误
【发布时间】: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


【解决方案1】:

这不是错误。日志告诉您 72K 记录没有加载到任何地方,因为它们不满足您的任何 WHEN 子句。

换句话说,在 74256 条记录中,31 条在 38 和 39 位有“HD”或“AS”,其余的则没有。你也让它跳过一行(也许第一行是标题行)。

如果您尝试仅加载“HD”和“AS”记录,这是一个成功的结果。

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多