2013年批量创建按月分表和视图方法

本文介绍了在Oracle数据库中批量创建按月分表和视图的两种方法:1) 使用PL/SQL,通过循环插入数据到模板表并执行生成的SQL;2) 利用Shell脚本结合数据库操作实现。这两种方法适用于需要根据月份自动创建分表和视图的场景。
摘要由CSDN通过智能技术生成

工作中碰到一批表是按照月分做的分表:

需要参照12年为13年创建按月分表和按月分视图。

这里有两种方法实现:

方法1:   plsql方式:

首先建立表:hch_temp_template

create table HCH_TEMP_TEMPLATE
(
  OWNER     VARCHAR2(200),
  TABLENAME VARCHAR2(200),
  TABDESC   VARCHAR2(4000)       ---直接输入表的定义:
);

  for i in 2..12
 loop
          insert into hch_temp_template(Owner,Tablename,TABDESC,Partname)               ---批量生成2到12月份的表,
          select owner,replace(tablename,'201301','2013'||to_char(i,'FM09')),
                       replace(tabdesc,'201301','2013'||to_char(i,'FM09')),partname from hch_temp_template
                       where tablename =vtable_name;
          commit;
  end loop;

插入表里面之后,直接select 出来执行即可。

方法2: shell脚本:

建表脚本:

-- Create table
create table OSS_LOGIN_USER_DAY_201212
(
  RECDATE     NUMBER(8) not null,
  USERNUMBER  VARCHAR2(32) not null,
  MODULEID    NUMBER(5) default 0 not null,
  CHANNELID   NUMBER(5) default 0 not null,
  OPERID      NUMBER(10) default 0 not null,
  CONTENTID   NUMBER(10) default 0 not null,
  SERVICEID   NUMBER(5) default 0 not null,
  OPERTYPE    NUMBER(10) default 0 not null,
  PROVCODE    NUMBER(5) default 0 not null,
  AREACODE    NUMBER(5) default 0 not null,
  SERVICEITEM VARCHAR2(20) not null,
  ORDERTYPE   NUMBER(5) default 0 not null,
  CARDTYPE    NUMBER(5) default 0 not null,
  BINDTYPEID  NUMBER(10) default 0 not null,
  TOTALCOUNT  NUMBER(10) default 0 not null,
  EXTCOUNT1   NUMBER(10) default 0 not null,
  EXTCOUNT2   NUMBER(10) default 0 not null,
  CREATETIME  DATE default sysdate not null,
  MODIFYTIME  DATE default sysdate not null
)
partition by range (PROVCODE)
(
  partition LOGIN_USER_DAY_201212_00 values less than (1)
    tablespace OSS03_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 80K
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition LOGIN_USER_DAY_201212_01 values less than (2)
    tablespace OSS03_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 80K
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition LOGIN_USER_DAY_201212_02 values less than (3)
    tablespace OSS03_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 80K
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition LOGIN_USER_DAY_201212_03 values less than (4)
    tablespace OSS03_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 80K
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition LOGIN_USER_DAY_201212_04 values less than (5)
    tablespace OSS03_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 80K
      next 1M
      minextents 1
      maxextents unlimited
    ),
  partition LOGIN_USER_DAY_201212_05 values less than (6)
    tablespace OSS03_DATA
    pctfree 10
    ini
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值