修改oracle externat table日期列格式

modify oracle externat table date column format

我有一个外部 table 链接到这样的 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 小时,所以我想在此 table 中使用以下语句更改它:

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

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

您正在尝试更改 column definition in the table itself - and a date column doesn't have a format. You are altering an external table,您需要改为更改访问参数:

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

虽然这会替换 whoel 访问参数部分,因此您确实需要重新指定所有其他设置:

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'
  )
);

...包括您在 post.

中省略的任何其他列