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

使用SQL*加载程序控制文件将日期从一种格式转换为另一种格式,sql,oracle,sql-loader,Sql,Oracle,Sql Loader,infle中的数据格式为MM/DD/YYYY如何告诉控制文件将其作为YYYYMM加载到数据库中?当您在infle声明中指定列时,只需标识数据保存的格式。像这样 load data infile 'whatever.csv' into table t23 fields terminated by ',' trailing nullcols ( col_1 integer , col_2 char , col_3 date "MM/DD/YYY

infle中的数据格式为
MM/DD/YYYY
如何告诉控制文件将其作为
YYYYMM
加载到数据库中?

当您在infle声明中指定列时,只需标识数据保存的格式。像这样

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\u列日期“MM/DD/YYYY”trunc(:date\u列,'MM')”

如果插入到CHAR/VARCHAR2列中,您可能需要对其进行稍微不同的转换:

vc2_列字符“substr(:vc2_列,7,4)| substr(:vc2_列,1,2)”