刚上班,领导给我提出一个需求,想要每天更新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. ansible(10)--ansible的systemd模块

    1. systemd模块 功能:管理服务启动与停止,与 service 模块用法一致: 主要参数如下: 参数 说明 name 指定需要控制的服务名称 state 指定服务状态,其值可以为stopped ...

  2. vue2组件封装示例

    组件封装注意事项: 1.props:属性.是父容器给子组件参数传递的桥梁 2.this.$emit:事件.子组件通知父容器事件发生,并给父容器传递数据和参数 3.子组件中经常要用watch监控数据变化 ...

  3. swagger文档枚举类型描述

    背景: 问题:使用swagger作为api文档,但文档中的枚举类型仅显示枚举name,对于使用文档的人员来讲不容易理解 解决思路:枚举类型加上自定义的描述 解决方案 maven配置 <depen ...

  4. zabbix使用

    安装部署6.0版本 获取仓库 https://www.zabbix.com/cn/download?zabbix=6.0&os_distribution=centos&os_versi ...

  5. vulnhub靶场 --> Red: 1

    靶机下载地址 Red: 1 << 点我 开始打靶 IP发现 nmap扫描网段发现靶机ip:192.168.111.142 端口发现 对靶机进行常规端口扫描 访问网站 到处点击发现存在一个可 ...

  6. QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

    前言   使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车.无人船.无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇: 上半部分:主要是安装好后,使用QtC ...

  7. go goroutine pool设计

    推荐一遍由浅入深简绍goroutine pool设计的方案.https://strikefreedom.top/high-performance-implementation-of-goroutine ...

  8. FFmpeg Batch AV Converter 2.2.2 官方版

    基本简介 FFmpeg Batch AV Converter官方版是一款Windows FFmpeg用户的前端程序,FFmpeg Batch AV Converter最新版允许使用FFmpeg命令行的 ...

  9. Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

    Rainbond 5.5 版本主要优化扩展性.服务治理模式可以扩展第三方 ServiceMesh 架构,兼容kubernetes 管理命令和第三方管理平台. 主要功能点解读: 1. 支持 Istio, ...

  10. openssl升级nginx升级支持openssl http2

    mkdir -p /usr/local/openssl #wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -xf opens ...