【问题标题】:modify oracle externat table date column format修改oracle外部表日期列格式
【发布时间】:2017-01-06 10:47:29
【问题描述】:

我有一个链接到 csv 文件的外部表,如下所示:

create table XT_FIN  
(
  ba_date                   DATE
)  
organization external
(  
  type ORACLE_LOADER  
  default directory XT_C  
  access parameters   
  (  
    records delimited by newline  
           badfile     XT_LOGS:'f.bad'  
           logfile     XT_LOGS:'f.log'  
           discardfile XT_LOGS:'f.dsc'  
           skip 1  
           fields  terminated by ',' optionally enclosed by '"'  
           lrtrim  
           missing field values are null  
                  (  

    BA_DATE         DATE 'MM/DD/YYYY HH:MI:SS am'  
                  )
  ) 
  location (XT_C:'detail.csv')
)  
reject limit UNLIMITED;

CSV 文件的日期时间格式更改为 24 小时,因此我想在此表中使用以下语句对其进行更改:

ALTER TABLE 
XT_FIN 
MODIFY       (   BA_DATE        DATE 'MM/DD/YYYY HH24:MI:SS'  );

但它不喜欢在 DATE 之后使用格式字符串,它想要 ) 代替。 如何仅更改此日期列的格式? 谢谢

【问题讨论】:

    标签: oracle csv datetime format alter-table


    【解决方案1】:

    您正在尝试更改表本身中的column definition - 并且日期列没有格式。您是altering an external table,您需要更改访问参数:

    alter table xt_fin 
    access parameters (fields (ba_date date 'MM/DD/YYYY HH24:MI:SS'));
    

    这取代了整体访问参数部分,因此您确实需要重新指定所有其他设置:

    alter table xt_fin 
    access parameters
    (
      records delimited by newline
      badfile     D42:'f.bad'  
      logfile     D42:'f.log'  
      discardfile D42:'f.dsc'  
      skip 1
      fields terminated by ',' optionally enclosed by '"'
      lrtrim  
      missing field values are null
      (
        ba_date date 'MM/DD/YYYY HH24:MI:SS'
      )
    );
    

    ...包括您在帖子中省略的任何其他列。

    【讨论】:

    • 谢谢亚历克斯,效果很好!我在猜测,我正在更改第一组列,但没有找到如何进入第二个列表。
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2013-08-23
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    相关资源
    最近更新 更多