修改oracle externat表日期列格式

时间:2017-01-06 10:47:29

标签: oracle csv datetime format alter-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小时,因此我想使用以下语句在此表中对其进行更新:

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

但它不喜欢DATE之后的格式字符串,它想要)。 如何仅更改此Date列的格式? 感谢

1 个答案:

答案 0 :(得分:1)

您正尝试更改表格中的column definition - 日期列没有格式。您是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'
  )
);

...包括您在帖子中遗漏的任何其他列。