关于Oracle分区 报错ORA-01847

这篇博客介绍了如何解决Oracle数据库中出现的ORA-01847错误,该错误通常与日期字段的数据格式不合法有关。作者提供了一种创建分区表的示例,并展示了一个扩展分区的SQL脚本,用于一次性创建多天的数据分区,确保日期在正确的范围内。
摘要由CSDN通过智能技术生成

ora-01847 解决记录

1、日期字段的是数据非法的,要么就是转换时格式不合格,如:TO_CHAR(‘2021-05-21’,‘YYYYMM’)
也可能是一种特殊的‘ ’,如全角的空格等。

创建分区

create table T_PHONE_BI_D_yf_2022
(
“TIMEST” VARCHAR2(24),
“TIMEST2” VARCHAR2(24),
“COL_1” VARCHAR2(60),
“COL_2” VARCHAR2(60),
“COL_3” VARCHAR2(60),
“COL_4” VARCHAR2(60),
“COL_5” VARCHAR2(60),
“COL_6” VARCHAR2(60),
“COL_7” VARCHAR2(60),
“COL_8” VARCHAR2(60),
“COL_9” VARCHAR2(60),
“COL_10” VARCHAR2(60)

)

partition by range(“TIMEST”)
(
partition P20210430 values LESS THAN (TO_DATE(‘20210501’,‘YYYYMMDD’ ))tablespace user_tb
)

扩展日分区

WITH lvl AS
(SELECT to_char((p + LEVEL-1),‘yyyymmdd’) p,to_char((p + LEVEL),‘yyyymmdd’) p1
FROM (SELECT to_date(‘20210101’, --从哪天开始创建分区
‘yyyymmdd’) p
FROM dual)
CONNECT BY LEVEL <= 365 --一次性创建多少天的数据
)
SELECT ‘alter table T_PHONE_BI_D_yf_2022 add partition P’ || p ||
’ values less than (to_date(’’’|| p1 || ‘’’,’‘yyymmdd’’))
tablespace USER_DEFAULT
pctfree 10
initrans 1
maxtrans 255;’ a
FROM lvl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值