create or replace procedure proc_backup_originaldata(retCode out varchar2, -- 返回码
                                                     retMsg  out varchar2) --返回信息
 is
 v_now varchar2(20):=to_char(sysdate,'yyyy-mm-dd');
 cursor c_backup is
 select *  from originaldata t where t.time <=v_now;
 v_filename varchar2(50):=v_now||'.txt';
 v_datastr  varchar2(1000):='';
 v_file   utl_file.file_type;
begin
 retCode:='1';
 retMsg:='原始数据备份完成';
 --备份原始数据,每十分钟一条,取平均值
 insert into warehousemonitor--originaltempdata
   (id,
    temperature1,
    temperature2,
    temperature3,
    temperature4,
    temperature5,
    temperature6,
    temperature7,
    temperature8,
    temperature9,
    temperature10,
    humidity1,
    humidity2,
    humidity3,
    humidity4,
    humidity5,
    humidity6,
    humidity7,
    humidity8,
    humidity9,
    humidity10,
    concentration1,
    concentration2,
    concentration3,
    time)
   select t.id,
          round(avg(t.temperature1),2),
          round(avg(t.temperature2),2),
          round(avg(t.temperature3),2),
          round(avg(t.temperature4),2),
          round(avg(t.temperature5),2),
          round(avg(t.temperature6),2),
          round(avg(t.temperature7),2),
          round(avg(t.temperature8),2),
          round(avg(t.temperature9),2),
          round(avg(t.temperature10),2),
          round(avg(t.humidity1),2),
          round(avg(t.humidity2),2),
          round(avg(t.humidity3),2),
          round(avg(t.humidity4),2),
          round(avg(t.humidity5),2),
          round(avg(t.humidity6),2),
          round(avg(t.humidity7),2),
          round(avg(t.humidity8),2),
          round(avg(t.humidity9),2),
          round(avg(t.humidity10),2),
          round(avg(t.concentration1),2),
          round(avg(t.concentration2),2),
          round(avg(t.concentration3),2),
          max(t.time)
     from originaldata t
    where t.time <= v_now
    group by t.id,
             substr(t.time, 1, length(t.time) - 6),
             trunc(to_char(to_date(t.time, 'yyyy-mm-dd hh24:mi:ss'), 'mi') / 10);
  --生成报表数据
 proc_generate_report(v_now);
 --写文件
 v_file:=utl_file.fopen('BAK',v_filename,'w');--写模式打开文件
 for data in c_backup loop
   v_datastr:=data.id||'|'||data.ipcode||
   '|'||data.temperature1||'|'||data.humidity1||
   '|'||data.temperature2||'|'||data.humidity2||
   '|'||data.temperature3||'|'||data.humidity3||
   '|'||data.temperature4||'|'||data.humidity4||
   '|'||data.time||
   '|'||data.temperature5||'|'||data.humidity5||
   '|'||data.temperature6||'|'||data.humidity6||
   '|'||data.temperature7||'|'||data.humidity7||
   '|'||data.temperature8||'|'||data.humidity8||
   '|'||data.temperature9||'|'||data.humidity9||
   '|'||data.temperature10||'|'||data.humidity10||
   '|'||data.concentration1||'|'||data.concentration2||'|'||data.concentration3||
   '|'||data.backup1||'|'||data.backup2||'|';
   utl_file.put_line(v_file,v_datastr);--向文件中写入行
 end loop;
 utl_file.fclose(v_file);--关闭文件句柄

--删除已备份数据
 delete from originaldata t where t.time <=v_now;
 commit;
 exception when others then
   retCode:=sqlcode;
   retMsg:=sqlerrm||sysdate;
end proc_backup_originaldata;

PROCEDURE_监测系统_数据备份存储过程—备份原始数据,每十分钟一条,取平均值的更多相关文章

  1. PROCEDURE_监测系统_告警信息存储过程—产生告警信息插入告警表

    create or replace procedure proc_alarmlog(in_id   in number, --采集器编码                                 ...

  2. PROCEDURE_监测系统_原始数据报表数据生成存储过程—求每天平均值插入多表视图

    create or replace procedure proc_generate_report(in_date in varchar2) is  v_retCode varchar2(20);  v ...

  3. TRIGGERS_监测系统_原始数据表触发器—调用告警信息存储过程

    //每次向originaldata表中插入数据就会触发该触发器 create or replace trigger originaldata_to_alarm  after insert on ori ...

  4. TRIGGERS_监测系统_多表视图触发器—向原始数据报表中插入数据

    Create Or Replace Trigger trg_view_report  Instead Of Insert or update or delete on view_for_report  ...

  5. 如何隐藏掉SQL Server中自带系统数据库,数据表,存储过程等显示文件,只显示用户的数据库,数据表等文件

    企业管理器了,---->   编辑该数据库的注册属性--->“常规”属性页下面-->“显示系统数据库和系统对象”的选项去掉

  6. ocp11g培训内部教材_053课堂笔记(043)_数据备份

    053:数据库高级管理: 目录 第一部分:数据库备份与恢复... 4 第一章:备份恢复概述... 4 1.1 备份的意义: 4 1.2 数据库故障的类型:... 4 1.3 制定你的备份和恢复的计划. ...

  7. SQL Server 数据备份存储过程

    原文:SQL Server 数据备份存储过程 今天开园,分享一下我一直在使用的数据备份存储过程,欢迎转载!!! ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  8. 数据迁移_把RAC环境备份的数据,恢复到另一台单机Oracle本地文件系统下

    数据迁移_把RAC环境备份的数据,恢复到另一台单机Oracle本地文件系统下 作者:Eric 微信:loveoracle11g 1.创建pfile文件 # su - ora11g # cd $ORAC ...

  9. 通过rsync+inotify实现数据的实时备份

    我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,r ...

随机推荐

  1. Android 开发中关于layoutinflater

    Inflater英文意思是膨胀,在Android中应该是扩展的意思吧. LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout ...

  2. Delphi中ShellExecute使用详解(详细解释10种显示状态)

    有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.1.CreateProcess因为使用复杂,比较少用.2.WinExec主要运行EXE文件.如: ...

  3. java设计模式--结构型模式--代理模式

    代理模式 概述 为其他对象提供一种代理以控制对这个对象的访问. 适用性 1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表. 2.虚代理(VirtualProxy)根据需要创 ...

  4. C/C++四种退出线程的方法

    退出线程可以有四种方法: 1.线程函数的return返回(最好这样): 其中用线程函数的return返回, 而终止线程是最安全的, 在线程函数return返回后, 会清理函数内申请的类对象, 即调用这 ...

  5. DBA 经典面试题(5)

    国外公司的Oracle DBA试题 Oracle DBA Interview Questions 1. How many memory layers are in the shared pool? 2 ...

  6. 脚本控制向Android模拟拨打电话,发送短信,定位设置功能

    做行为触发的时候要向模拟器实现拨打电话,发送短信,定位设置的的功能,可以很方便通过telnet localhost  5554实现. 写个脚本很快的搞定了.网上资料很多,脚本的很少,也所积点德啦. 写 ...

  7. linux之getcwd函数解析

    [lingyun@localhost getcwd]$ cat getcwd.c /********************************************************** ...

  8. WPF动画

    System.Windows.Media.Animation 这个命名空间中,包含了三种动画类:线性插值动画类(17个).关键帧动画(22个).路径动画(3个). 线性插值动画类(17个)如下: By ...

  9. A星算法

    没有采用二叉堆算法优化, 学习了几天终于搞除了一个demo, 这个列子如果点击按钮生成的方块大小不正确,可以先设置下预设调成相应的大小 只能上下左右走   using UnityEngine; usi ...

  10. XCode中在提示窗体中对已弃用的API接口画上红线

    当我们在XCode中写程序时会不断的出现相关API提示窗体,那敲起来是一个爽啊. 有时候会看到一些API已经弃用了被画上红色的横线.说明该接口已经被弃用,仍保留,但不建议使用,对弃用API实现画横线事 ...