options (skip=1)
load data
truncate
into table test_table
fields terminated by '\t' TRAILING NULLCOLS
(
type,
rvw_date "case when :rvw_date = 'NULL' then null WHEN REGEXP_LIKE(:rvw_date, '\d{4}/\d{2}/\d{2}') THEN to_date(:rvw_date,'yyyy/mm/dd') else to_date(:rvw_date,'mm-dd-yy') end"
)
type rvw_date
Phone 2014/01/29
Phone 2014/02/13
Field NULL
Phone 01/26/15
Field 02/25/12
架构:
create table test_table
(
type varchar2(20),
rvw_date date
)
SQL*Loader控制文件似乎将反斜杠解释为转义字符。SQL运算符部分也显示了转义的双引号;它并不明显适用于其他任何东西,但它是有意义的,一个单一的反斜杠总是被认为是转义的东西。
您的正则表达式模式需要对\d
进行双转义,以使模式在文件中像在普通SQL中一样工作。目前,模式不匹配,所以所有的值都转到els
,这是wrng格式掩码(即使它们都被更正了)。
这是有效的:
options (skip=1)
load data
truncate
into table test_table
fields terminated by '\t' TRAILING NULLCOLS
(
type,
rvw_date "case when :rvw_date = 'NULL' then null when REGEXP_LIKE(:rvw_date,'\\d{4}/\\d{2}/\\d{2}') then to_date(:rvw_date,'yyyy/mm/dd') else to_date(:rvw_date,'mm/dd/rr') end"
)
alter session set nls_date_format = 'YYYY-MM-DD';
select * from test_table;
TYPE RVW_DATE
-------------------- ----------
Phone 2014-01-29
Phone 2014-02-13
Field
Phone 2015-01-26
Field 2012-02-25
问题内容: 我使用此查询创建了一个表现 在,当我尝试使用插入一些数据时,遇到此错误。 我做错了什么? 问题答案: 不是日期,而是一个字符串。 当使用session参数的值作为格式掩码将Oracle非日期文字插入到列中时,Oracle将对其进行隐式处理( 注意:这是一个session参数,属于客户端;它不是全局设置 )。如果非日期文字与该格式匹配,则它将起作用(如果不匹配,则它将不起作用)-但是,如
我希望在oracle数据库11.2.0.4版上的PL/SQL ETL进程中插入具有时间戳列的表中的数据 如果在Toad中运行“Create INSERT from seletcted row”,将得到以下SQL命令: 在PL/SQL中,我生成一个varchar2/string,类似于:
我在Oracle DB中有一个列,它是数据类型。存储在此列中的典型值类似于。我试图得到所有的记录,其中该专栏有记录后2015年8月1日。 但是,我得到的是。我哪里做错了?
问题内容: 我在sql中有一个表,如下所示: 我正在尝试插入它: 但是我得到了错误:ORA-01843:无效的月份 这是一个Oracle数据库。我不确定日期格式有什么问题。 问题答案: 目前尚不清楚您想要哪个,因此您可以尝试: 对于月日年格式: 对于日-月-年格式: 另外,建议阅读:Oracle函数:TO_DATE
下面是我的Oracle过程中的代码: 有什么想法吗?