【问题标题】:ORA-01841: (full) year must be between -4713 and +9999, and not be 0 issue with SQL loader and TOADORA-01841: (完整) 年份必须介于 -4713 和 +9999 之间,并且不是 0 SQL 加载程序和 TOAD 问题
【发布时间】:2019-05-15 18:26:12
【问题描述】:

我正在尝试将数据加载到“LOAN”表。数据是位置格式的文本文件是 20190512。当我将列类型更改为 varchar2(8 char) 时,数据已加载但当我使用 TO_Date 或 Date 函数在将其类型更改为 DATE 列类型后加载时,我在下面提到的错误

ORA-01841:(完整)年份必须介于 -4713 和 +9999 之间,并且不能为 0

注意:该列目前没有该位置的数据。

我已经尝试过 "TO_DATE(:DR430_LAST_MOD_DATE, 'YYYYMMDD')" 和 Date 但似乎都不起作用。但是,类似的 to_Date 语法适用于其他日期列。另外,此列处于焦点位置,此时该位置没有数据。

DR430_LAST_MOD_DATE POSITION (7404:7411) DATE "YYYYMMDD" NULLIF (DR430_LAST_MOD_DATE = BLANKS), --请建议在位置之后写什么。

【问题讨论】:

    标签: sql sql-loader


    【解决方案1】:

    在转换为日期之前尝试删除空格

    TO_DATE(TRIM(:DR430_LAST_MOD_DATE), 'YYYYMMDD')
    

    【讨论】:

    • 我同意。如果您尝试将 8 个空格字符转换为日期但空字符串将被视为 NULL,Oracle 将做出严重反应。
    • 能否请您告诉我“TO_DATE(TRIM(:DR430_LAST_MOD_DATE), 'YYYYMMDD') , nullif TRIM(:DR430_LAST_MOD_DATE) = BLANKS”是否正确?我无法在没有“”的情况下传递 to_date,并且不知道如何在 to_date 之后的“”内添加 nullif 条件。我是 sql loader 的超级新手。
    • 只需修剪您希望转换的数据,如果它是空字符串,oracle 将负责将其更改为 null。
    • 非常感谢您的及时帮助!
    • @AndréSanson:我可以问一个完全不同的问题,即如何使用 sql 加载器仅加载前 5 或 10 行。由于我对此非常陌生,如果您能分享这种情况,那就太好了。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多