Oracle SQLLDR - 使用无效日期加载记录,用Null替换无效日期

时间:2018-06-13 23:19:54

标签: oracle date sql-loader ctl nullif

我的源文本文件中有记录包含无效的日期值。由于手动输入,无效的日期值格式不一致。我仍然想加载所有这些记录,但我想用null替换无效的日期值。

请通过SQLLDR控制文件命令告诉我这是否可行。我想避免创建任何自定义函数。一些简单的通常是指错误/异常并且有效(与下面不同)是理想的:

日期" MM / DD / YYYY" NULLIF(FROM_DOS = EXCEPTION)

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,这不会一蹴而就。我建议你尝试一种相对简单的方法:

  • 按原样加载原始数据""
    • 无效日期的行无法加载,但会以 .BAD 文件结尾
  • 然后修改控制文件:
    • source现在将是.BAD文件
    • 将NULL加载到日期列中(FILLER可能有帮助)

或者,您可以将源文件用作外部表,并对其编写(PL /)SQL以将数据加载到目标表中。它允许你实际上代码你想要的任何东西,但是 - 如你所说,你不想创建一个自定义函数(它将决定输入数据是否 - 或者是 - 有效DATE值),我认为你宁愿跳过那个选项。