ORACE 数据迁移 数据清洗 简单得统计配置

简介: 一份Oracle 数据清洗的统计程序

编写得目的:

   1 在数据迁移中,日常数据清洗是一个很频繁得工作。如果每次通过sql分步执行会非常麻烦及耗时。
        所以通过自动统计执行的方式处理减少不必要的重复并且简单的工作量
   2 在大量的任务及着急催促下 减少出错的概率
   3 所以统计信息同步数据库存储 从而 信息共享 方便工作使用 如 在家远程 等等的,同事协助处理,会简单并且
     方便很多

第一 我们创建一张RS_STATISTICS表 存储我们的统计信息及统计脚本
第二 根据我们的RS_STATISTICS 的内容 通过存储过程去 执行我们要统计的脚本

    在这里只需要使用到 动态执行 即可

/*
create table RS_STATISTICS
(
rs_id VARCHAR2(50),
rs_type VARCHAR2(50),
rs_name VARCHAR2(50),
rs_content VARCHAR2(4000),
rs_table VARCHAR2(50),
rs_num NUMBER,
op_tm DATE default sysdate not null,
rs_sts NUMBER default 0 not null,
ct DATE,
ut DATE,
memo VARCHAR2(3000),
rs_exception VARCHAR2(3000)
)
tablespace SYNCSH_DAT
pctfree 10
initrans 1
maxtrans 255
storage
(

initial 64K
next 1M
minextents 1
maxextents unlimited

);
-- Add comments to the columns
comment on column RS_STATISTICS.rs_id
is 'ID';
comment on column RS_STATISTICS.rs_type
is '类型';
comment on column RS_STATISTICS.rs_name
is '名称';
comment on column RS_STATISTICS.rs_content
is '内容';
comment on column RS_STATISTICS.rs_table
is '表';
comment on column RS_STATISTICS.rs_num
is '数量';
comment on column RS_STATISTICS.op_tm
is '录入时间';
comment on column RS_STATISTICS.ct
is '开始时间';
comment on column RS_STATISTICS.ut
is '更新时间';
comment on column RS_STATISTICS.memo
is '备注';
comment on column RS_STATISTICS.rs_sts
is '状态 0 待执行,1 执行中,2 执行成功,4 异常';

*/

create or replace package p_rs_statistics is

--// 程序启动
procedure p_start;
--// 初始化 数据存储表
procedure p_Complement;
--// 程序处理
procedure perform(p_id varchar2);
--// 清空落地表数据
procedure truncate_str(rs_table varchar2);
--// drop 表
procedure drop_str(rs_table varchar2);

end p_rs_statistics;
/
create or replace package body p_rs_statistics is

procedure p_start is
begin

for x in (select d.rs_id from syncsh.rs_statistics d where d.rs_sts = 0) loop
  update syncsh.rs_statistics d
     set d.rs_sts = 1, d.rs_exception = null, d.rs_num = 0,ct=sysdate
   where d.rs_id = x.rs_id;
  commit;
  perform(x.rs_id);
end loop;

exception

when others then
  rollback;

end;

procedure p_Complement is

v_rs_statistics syncsh.rs_statistics%rowtype;

begin

update syncsh.rs_statistics d
   set d.rs_table = 'syncsh.rs_statistics_' || d.rs_id
 where 1 = 1;
commit;

end;

procedure perform(p_id varchar2) is

v_rs_statistics syncsh.rs_statistics%rowtype;
exec_str        varchar2(4000);
p_sqlerrm       varchar2(4000);

begin

select *
  into v_rs_statistics
  from syncsh.rs_statistics d
 where d.rs_id = p_id;
---> 清空表
p_rs_statistics.truncate_str(v_rs_statistics.rs_table);
---> 删除表
p_rs_statistics.drop_str(v_rs_statistics.rs_table);
---> 创建 录入数据
exec_str := 'create table ' || v_rs_statistics.rs_table || ' as ' ||
            v_rs_statistics.rs_content;
execute immediate exec_str;
v_rs_statistics.rs_num := sql%rowcount;
dbms_output.put_line('rs_num :' || v_rs_statistics.rs_num);
--> 更新状态
update syncsh.rs_statistics d
   set d.rs_num = v_rs_statistics.rs_num, d.rs_sts = 2, d.ut = sysdate
 where d.rs_id = p_id;
commit;

exception

when others then
  p_sqlerrm := substr(sqlerrm, 1, 500);
  dbms_output.put_line('exec_str : ' || exec_str);
  dbms_output.put_line('ID :' || p_id || ' 异常 : ' || p_sqlerrm);
  --> 记录异常
  update syncsh.rs_statistics d
     set d.rs_exception = p_sqlerrm, d.rs_sts = 4, d.ut = sysdate
   where d.rs_id = p_id;
  commit;

end;

procedure truncate_str(rs_table varchar2) is

truncate_str varchar2(4000);
p_sqlerrm    varchar2(4000);

begin

truncate_str := 'truncate table  ' || rs_table;
execute immediate truncate_str;

exception

when others then
  p_sqlerrm := substr(sqlerrm, 1, 500);
  dbms_output.put_line('truncate rs_table :' || rs_table || ' 异常 : ' ||
                       p_sqlerrm);

end;

procedure drop_str(rs_table varchar2) is

drop_str  varchar2(4000);
p_sqlerrm varchar2(4000);

begin

drop_str := 'drop table  ' || rs_table;
execute immediate drop_str;
commit;

exception

when others then
  p_sqlerrm := substr(sqlerrm, 1, 500);
  dbms_output.put_line('drop rs_table :' || rs_table || ' 异常 : ' ||
                       p_sqlerrm);

end;

end p_rs_statistics;
/

/*
软件程序 脚本是为了提供方便而产生。愿可以减少不必要的时间浪费。
如 小伙伴提供一份 程序 导出execl 的最好了 感谢!
*/

目录
相关文章
|
SQL 监控 vr&ar
网站流量日志分析—数据入库—ODS 数据导入操作|学习笔记
快速学习网站流量日志分析—数据入库—ODS 数据导入操作
233 0
网站流量日志分析—数据入库—ODS 数据导入操作|学习笔记
|
4月前
|
分布式计算 数据可视化 数据挖掘
对maxcompute的数据进行临时分析 比如数据分布什么的 用什么工具比较好?
对maxcompute的数据进行临时分析 比如数据分布什么的 用什么工具比较好?
55 3
|
7月前
|
存储 监控 应用服务中间件
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
111 0
|
分布式计算 DataWorks API
基于pyodps对MaxComputer表的数据探查
本次脚本设计是针对大批量表,并且没有明确业务支持下的数据探查,会根据不同的类型进行判定,根据结果值进行分析得出结论,并给出一定的建议,同时该脚本仅仅支持普通表,一级分区表和二级分区表;一级分区表的分区字段必须是ds或者pt。
861 0
|
存储 数据采集 移动开发
日志服务之数据清洗与入湖-1
日志服务之数据清洗与入湖-1
93 0
日志服务之数据清洗与入湖-1
|
存储 数据采集 移动开发
日志服务之数据清洗与入湖-2
日志服务之数据清洗与入湖-2
89 0
日志服务之数据清洗与入湖-2
|
数据采集 存储 监控
日志服务之数据清洗与入湖-4
日志服务之数据清洗与入湖-4
89 0
日志服务之数据清洗与入湖-4
|
存储 数据采集 移动开发
日志服务之数据清洗与入湖-3
日志服务之数据清洗与入湖-3
104 0
日志服务之数据清洗与入湖-3
|
分布式计算 监控 Spark
日志分析实战之清洗日志小实例7:查看样本数据,保存统计数据到文件
日志分析实战之清洗日志小实例7:查看样本数据,保存统计数据到文件
100 0
日志分析实战之清洗日志小实例7:查看样本数据,保存统计数据到文件
|
SQL 监控 HIVE
网站流量日志分析--统计分析--多维统计分析--时间维度--维表关联查询|学习笔记
快速学习网站流量日志分析--统计分析--多维统计分析--时间维度--维表关联查询
187 0
网站流量日志分析--统计分析--多维统计分析--时间维度--维表关联查询|学习笔记