【问题标题】:How to load files using SQLLDR with date format as yyyymmddhhmmss?如何使用日期格式为 yyyymmddhhmmss 的 SQLLDR 加载文件?
【发布时间】:2017-01-27 20:36:39
【问题描述】:

我需要加载一个包含日期“20140825145416”的 .csv 文件的表格。
我尝试在我的控制文件中使用 (DT date "yyyymmdd hh24:mm:ss")。
它会抛出一个错误,如 ORA-01821:日期格式无法识别

我要求表格中的数据为“MM/DD/YYYY HH:MM:SS”。
样本数据:20140825145416

提前致谢。

【问题讨论】:

    标签: oracle sql-loader


    【解决方案1】:

    好吧,如果我没有指出正确的答案是永远不要将日期存储为 VARCHAR2 数据,而是将其设置为适当的 DATE 列并像这样加载它,那我就失职了:

     DT DATE "YYYYMMDDHH24MISS"
    

    选择时完成格式化。如果您需要在计算中使用该日期,这将使您的生活变得更加轻松。

    顺便说一句,如果您无法控制数据库并且必须将其存储为 VARCHAR2,请先转换为日期,然后在插入之前使用 to_char 对其进行格式化:

    DT CHAR "to_char(to_date(:DT, 'YYYYMMDDHH24MISS'), 'MM/DD/YYYY HH24:MI:SS')"
    

    注意“MI”用于表示分钟。您在几分钟内再次使用“MM”(月)时出现拼写错误。

    【讨论】:

      【解决方案2】:

      我知道在上一个答案中已经说过,但它是如此重要,值得重复。不要将日期存储为 varchars !!

      【讨论】:

      • 我们有一个喜欢将日期存储为数字的人。革命来临时,他将是第一个碰壁的人……
      【解决方案3】:

      如果您的 DT 列是时间戳,那么这可能会起作用

      DT CHAR(25) date_format TIMESTAMP mask "yyyymmddhhmiss"

      我在外部表中使用了类似的东西。也许这可能会有所帮助 https://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htmhttps://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8128892010789

      【讨论】:

        猜你喜欢
        • 2020-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        • 2017-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多