热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

天气数据处理

1.site_code取前五位(因为是先用文件名作为site_code,然后从文件名中截取前五位即为site_code)(图上错了,图上取得是6位,但是懒得在找一遍截图了)2.存储

1.site_code 取前五位


(因为是先用文件名作为site_code,然后从文件名中截取前五位即为site_code)

image

image

(图上错了,图上取得是6位,但是懒得在找一遍截图了)


2.存储过程+游标对数据进行处理


(1)缺失数据(-9999)置为一个大概值

(2)将10比例的数据除以10,例如温度220→22

image

(好家伙,处理了一下午)

image


3.删除列


游标更新的时候忘了sky和wind_direction了,这两列问题不大,直接删了

image

image


4.SQL语句


(1)截取

update site_weather set site_code=left(site_code,5)

(2)创建索引

create index index_id on site_weather(id desc)

(3)存储过程

drop procedure processData;
/*创建存储过程,使用游标处理site_weather中的数据*/
create procedure processData() begin
/*声明临时变量,用于更改*/
declare result_code integer default 1; #定义返回结果并赋初值0
declare s int default 0; #标志变量
declare resultId bigint default 0;
declare air int default 0;
declare dew int default 0;
declare sea int default 0;
declare windDirection int default 0;
declare windSpeed int default 0;
declare sky int default 0;
declare one int default 0;
declare six int default 0;
/*声明游标*/
declare processCursor cursor for select
id,air_temperature,dew_point_temperature,sea_level_pressure,wind_direction,wind_speed,sky_coverage,one_hour_duration,six_hour_duration
from site_weather;
/*定义HANDLER*/
declare continue handler for sqlexception set result_code=0; #在执行过程中出任何异常设置result_code为0
declare continue handler for not found set s=1; #声明当游标遍历完后将标志变量置成某个值
/*打开游标*/
open processCursor;
/*将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql结果列的顺序一致*/
fetch processCursor into resultId,air,dew,sea,windDirection,windSpeed,sky,one,six;
-- 当s不等于1,也就是未遍历完时,会一直循环
while s<>1 do
-- 执行业务逻辑
/*
*处理air_temperature为缺失数据时(-9999)
*这里由于之前更新操作失误,因此-1000的值也是无效的,需要重新更新
*/
if air=-9999 or air=-1000 then
set air=200;
end if;
/*
*处理dew_point_temperature为缺失数据时(-9999)
*/
if dew=-9999 or dew=-1000 then
set dew=200;
end if;
/*
*处理sea_level_pressure为缺失数据时(-9999)
*/
if sea=-9999 or sea=-1000 then
set sea=10000;
end if;
/*
*处理wind_direction为缺失数据时(-9999)
*/
if windDirection=-9999 or windDirection=-1000 then
set windDirection=180;
end if;
/*
*处理wind_speed为缺失数据时(-9999)
*/
if windSpeed=-9999 or windSpeed=-1000 then
set windSpeed=40;
end if;
/*
*处理sky_coverage为缺失数据时(-9999)
*/
if sky=-9999 or sky=-1000 then
set sky=5;
end if;
/*
*处理one_hour_duration为缺失数据时(-9999)
*/
if one=-9999 or one=-1000 then
set one=0;
end if;
/*
*处理six_hour_duration为缺失数据时(-9999)
*/
if six=-9999 or six=-1000 then
set six=0;
end if;
/*
*转换为现实数据(前面都只是在判断以及赋值,这里才是真正的更新语句)
*/
update site_weather
set air_temperature=air/10,dew_point_temperature=dew/10,
sea_level_pressure
=sea/10,wind_speed=windSpeed/10,
one_hour_duration
=one/10,six_hour_duration=six/10
where id=resultId;
-- 将游标中的值再赋值给变量,供下次循环使用
fetch processCursor
into resultId,air,dew,sea,windDirection,windSpeed,sky,one,six;
-- 当s等于1时表明遍历以完成,退出循环
end while;
/*--关闭游标*/
close processCursor;
end
call processData();

(4)删除列

/*sky_coverage和wind_direction忘了更新了,就直接删掉了*/
alter table site_weather drop column sky_coverage;
alter table site_weather drop column wind_direction;





推荐阅读
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 如何查找和管理计算机中的C盘临时文件
    本文详细介绍了如何在计算机中找到和管理C盘的临时文件,包括其具体路径、环境变量设置方法以及清理这些文件对系统性能的影响。对于希望优化系统性能和释放磁盘空间的用户来说,这是一篇非常有价值的参考。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
author-avatar
弹指遮天的小指头
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有