使用SQL * Loader控制文件将日期从一种格式转换为另一种格式

问题描述:

来自infile的数据格式为MM/DD/YYYY如何告诉控制文件将其作为YYYYMM加载到数据库中?使用SQL * Loader控制文件将日期从一种格式转换为另一种格式

当您指定的INFILE列申报只是识别数据被保持的格式。像这样

load data 
infile 'whatever.csv' 
into table t23 
fields terminated by ',' 
trailing nullcols 
(
     col_1 integer 
    , col_2 char 
    , col_3 date "MM/DD/YYYY" 
    , col_4 date "MM/DD/YYYY" 
    , col_5 char 
) 

不要担心“到”日期格式。这仅用于显示目的。 Oracle将日期存储在自己的内部表示中。

您是否试图将MM/DD/YYYY数据加载到char/varchar2字段或日期字段中?

如果您尝试将其加载到日期字段中并且想要保留当月的某一天,那么APC的答案是正确的。如果这是你想要做的,你总是可以呈现YYYYMM。

如果你试图将其加载到一个日期字段,并希望将其截断到一个月的第一天,我觉得像这样的工作:

date_column date "MM/DD/YYYY" "trunc(:date_column, 'mm')"

如果插入一个CHAR/VARCHAR2列,你可以稍微改变它:

vc2_column char "substr(:vc2_column, 7, 4) || substr(:vc2_column, 1, 2)"