Oracle SQL loader - 在同一列中加载不一致的日期格式
Oracle SQL loader -to load inconsistent date formats in same column
我的客户提供了两个不同年份的 2 个提要文件加载到我们的 database.The 问题是 cloumn(TIME_STAMP) 接收两种不同格式的数据。
对于 2019 年:TIME_STAMP 以 MM/DD/YYYY HH24:MI:SS
格式接收
对于 2020 年:TIME_STAMP 列以 YYYY/MM/DD HH24:MI:SS
格式接收
我写了一个代码 in.ctl 文件像
"to_date(:TIME_STAMP, case when regexp_substr(:TIME_STAMP,'\w+',1,2)=regexp_substr(:TIME_STAMP,'\w+',1,2) then 'YYYY/MM/DD HH24:MI:SS' else
'MM/DD/YYYY HH24:MI:SS' end)",
问题是我正在加载我的 2019 年文件,但我的 2020 年文件正在加载
"ORA-01843:Not a valid month"
考虑:
to_date(
:TIME_STAMP,
case
when substr(:TIME_STAMP, 1, 4) = '2020' then 'YYYY/MM/DD HH24:MI:SS'
else 'MM/DD/YYYY HH24:MI:SS'
end
)
逻辑是简单地检查字符串的前 4 个字符;如果是 '2020'
,那么我们使用第一个 sring 格式,否则我们使用另一个。
我的客户提供了两个不同年份的 2 个提要文件加载到我们的 database.The 问题是 cloumn(TIME_STAMP) 接收两种不同格式的数据。
对于 2019 年:TIME_STAMP 以 MM/DD/YYYY HH24:MI:SS
对于 2020 年:TIME_STAMP 列以 YYYY/MM/DD HH24:MI:SS
我写了一个代码 in.ctl 文件像
"to_date(:TIME_STAMP, case when regexp_substr(:TIME_STAMP,'\w+',1,2)=regexp_substr(:TIME_STAMP,'\w+',1,2) then 'YYYY/MM/DD HH24:MI:SS' else
'MM/DD/YYYY HH24:MI:SS' end)",
问题是我正在加载我的 2019 年文件,但我的 2020 年文件正在加载
"ORA-01843:Not a valid month"
考虑:
to_date(
:TIME_STAMP,
case
when substr(:TIME_STAMP, 1, 4) = '2020' then 'YYYY/MM/DD HH24:MI:SS'
else 'MM/DD/YYYY HH24:MI:SS'
end
)
逻辑是简单地检查字符串的前 4 个字符;如果是 '2020'
,那么我们使用第一个 sring 格式,否则我们使用另一个。