刚上班,领导给我提出一个需求,想要每天更新Mysql数据库中的原有商品订单状态,添加新的商品订单状态。因为公司目前的数据库只能添加数据,不能更改数据,想要更改原有的数据,只能将原有的数据清空,再导入新的数据。从3月12日入职试岗到3月23日,正式想出一个比较不错的解决方法,耗时12天。

记录下思考过程:

首先数据库-物流状态表,长这样:

刚开始的思路:

乍一看,蛮简单的嘛,因为id是自增的没有实质作用,只要通过回执单号,update 更改状态和发货时间、更新时间就可以了,然额,,,,百度好多,并没有找到合适的。

那就问问我们数据部吧,他们给的方案:先查询再删除。语句如下:

查询所有状态为”未完成”从订单号在(所有状态为”已完成”的订单号)中的订单号,删除这些订单号的数据where条件为状态为”未完成” or “在途” ...

select * from 台湾物流状态 where 订单号 in (

select 订单号 from 台湾物流状态 where 物流状态="已完成")

and 物流状态="在途"

先执行查询语句,核对信息完整无误后,将select * 换成delete ,

执行删除语句,将需要删除的数据进行删除。

然而,光查询语句就用了900多秒,我勒个去,

优化前:955.344s
select * from 台湾物流状态 where 订单号 in (
select 订单号 from 台湾物流状态 where 物流状态="已完成")
and 物流状态="在途"

第一次优化后,使用字段查询:393.244s
select `回执单号`,`状态` from `香港物流状态` a where EXISTS
(
select 回执单号 from `香港物流状态` where 回执单号=a.`回执单号`)
and 状态="在途"

使用*号查询:394.239s
select * from `香港物流状态` a where EXISTS
(
select 回执单号 from `香港物流状态` where 回执单号=a.`回执单号`)
and 状态="在途"

然后同事反馈还是慢,改呗。

转换思路:

后来想使用触发器,,,,但是没有相似的例子可以直接应用,大都是通过一张表数据的改变来修改另一张表的数据,所以先将这个思路放一边。

再换思路:

想到之前在家将excel和mysql连接起来,公司使用的是wps,所以下载mysql驱动ODBC,将wps和mysql连接起来,差不多就是下面的这个方式:

WPS表格连接mysql数据库

https://jingyan.baidu.com/article/d169e18617159b436711d862.html

然而这种方式不能在Excel中编辑数据然后保存在数据库中,不能满足需求,故舍弃。

想到我在家使用的是Office2010的excel for mysql插件,很简单的连接数据库插件,但是公司电脑office版本是2007版本的,试了一下,安装上插件,但是不显示下面这个东东:

使用教程链接:MySQL for Excel简介 http://blog.sina.com.cn/s/blog_731d4f750102uxpw.html

MySQL for Excel 安装包下载:https://dev.mysql.com/downloads/windows/excel/

没办法,下载office2010(中间出了一个小bug,用激活工具激活2010后,每次打开excel还是会出现重新配置;;只要把其他版本的office和wps卸掉,不保留其他配置就没事了;经测试,2010以上版本都可以使用)。

2010安装成功,出现上面的Mysql for excel插件,然后正常连接数据库。新!MySQL for Excel:编辑数据

功能一:

新!Excel for MySQL 编辑数据:

https://www.mysql.com/why-mysql/windows/excel/edit/

点击这个 Edit MySQL Data 这个功能,并且要勾上第二个图 “√”这个选项,就可以在Excel中修改数据后自动保存在数据库中(修改后的数据在Excel中用绿色填充)。

功能二:

追加数据到已存在的表:

点击这个功能,

选择 Automatic的选项,

点击左下角的高级选项:

在最后一个选项,选中如下图所示:

之后就是确定了,然后

点击append,就可以实现追加数据到已存在的表,基本就是一分钟以内的事情,搞定,

Excel 更改数据同步更新到Mysql数据库的更多相关文章

  1. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  2. 从Excel中读取数据并批量写入MySQL数据库(基于MySQLdb)

    一.Excel内容如下,现在需要将Excel中的数据全部写入的MySQL数据库中: 二.连接MySQL的第三方库使用的是“MySQLdb”,代码如下: # -*- coding:utf-8 -*-im ...

  3. (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库

    场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL  ...

  4. 做ETL的时候用到的数据同步更新代码

    这里是用的从一个库同步到另一个库,代码如下 private void IncrementalSyncUpdate(string fromConn, string toConn, Dictionary& ...

  5. Capistrano:自动完成多台服务器上新版本的同步更新,包括数据库的改变

    https://baike.baidu.com/item/Capistrano/6844928?fr=aladdin   Capistrano是一种在多台服务器上运行脚本的开源工具,它主要用于部署we ...

  6. android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?

    通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...

  7. PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

    PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...

  8. 数据存储之使用mysql数据库存储数据

    推荐安装mysql5.7环境: 官网下载:https://dev.mysql.com/downloads/installer/5.7.html 如果提示没有.NET Framework框架.那么就在提 ...

  9. 使用Sqlserver事务发布实现数据同步(sql2008)_Mssq l数据库教程

    事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布 ...

  10. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

随机推荐

  1. 13、web 中间件加固-Nginx 加固

    1.隐藏版本信息 避免被针对版本直接使用漏洞 修改 nginx.conf 文件 在 http 模块中添加信息:server_tokens off; 2.限制目录权限 某些目录为运维页面,不要公开访问 ...

  2. ansible(15)--ansible的mount模块

    1. mount模块 功能:管理被控端设备挂载: 主要参数如下: 参数 说明 src 本地或远程设备的路径 path 设备挂载至本地的路径 fstype 挂载的文件系统类型,xfs.nfs... op ...

  3. 【源码】蚁群算法TSP问题可视化

    ACO.Visualization项目 本项目演示蚁群算法求解旅行商问题的可视化过程,包括路径上的信息素浓度.蚁群的运动过程等.项目相关的代码:https://github.com/anycad/AC ...

  4. Navigator.sendBeacon()

    navigator.sendBeacon() 方法可用于通过 HTTP POST 将少量数据异步传输到 Web 服务器. 这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload ...

  5. Redis高可用一(主从)

    Redis高可用一(主从) 1.首先要有2或以上的Redis数据库,我这里三个redis(一主两从) 2.进入到主Redis 配置 redis.conf文件 # 主redis bind 0.0.0.0 ...

  6. Prism IoC 依赖注入

    现有2个项目,SinglePageApp是基于Prism创建的WPF项目,框架使用的是Prism.DryIoc,SinglePageApp.Services是C#类库,包含多种服务,下面通过使用Pri ...

  7. windows安装mysql8(5分钟)

    1.下载 MySQL https://dev.mysql.com/downloads/mysql/ 下载完成后,解压缩到你的目录里. 2.配置 MySQL 的配置文件 创建一个文件,名称为:my.in ...

  8. jquery浏览器的上卷高度 节点的创建和写入 节点的删除

    // js 的兼容语法         // let scrollT = document.documentElement.scrollTop || document.body.scrollTop; ...

  9. 23201826-熊锋-第二次blog

    一.前言 这三次pta作业第一次为答题判断程序-4,这是答题判断程序的第三次迭代,相较于答题判断三,新增了各种题型及其不同种类的答案,并且出现多选题,使得这次题目相当棘手,具有很大的挑战性.第二次为家 ...

  10. HP惠普战66电源黄灯闪烁无法充电

    HP惠普战66电源黄灯闪烁无法充电 TYPE-C PD 无法充电. 解决办法:关机状态下,拔除外部设备,长按电源键30秒以释放主板静电,再插电源线可以开机.