【发布时间】:2010-07-22 11:55:17
【问题描述】:
infile 中的数据格式为MM/DD/YYYY 如何告诉控制文件以YYYYMM 的形式将其加载到数据库中?
【问题讨论】:
标签: sql oracle sql-loader
infile 中的数据格式为MM/DD/YYYY 如何告诉控制文件以YYYYMM 的形式将其加载到数据库中?
【问题讨论】:
标签: sql oracle 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)"
【讨论】: