0

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

请让我知道这是否/如何通过 SQLLDR 控制文件命令实现。我想避免创建任何自定义函数。通常指错误/异常并且有效(与以下不同)的简单事物是理想的:

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

谢谢!

4

1 回答 1

0

据我所知,这不会一次通过。我建议您尝试一种相对简单的方法:

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

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

于 2018-06-14T04:57:08.103 回答