Excel更改数据同步更新到Mysql数据库
离别不舍的句子刚上班,领导给我提出⼀个需求,想要每天更新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数据库
然⽽这种⽅式不能在Excel中编辑数据然后保存在数据库中,不能满⾜需求,故舍弃。
想到我在家使⽤的是Office2010的excel for mysql插件,很简单的连接数据库插件,但是公司电脑office版本是2007版本的,试了⼀下,安装上插件,但是不显⽰下⾯这个东东:
没办法,下载office2010(中间出了⼀个⼩bug,⽤激活⼯具激活2010后,每次打开excel还是会出现重新配置;;只要把其他版本的office和wps卸掉,不保留其他配置就没事了;经测试,2010以上版本都可以使⽤)。
2010安装成功,出现上⾯的Mysql for excel插件,然后正常连接数据库。新!MySQL for Excel:编辑数据
功能⼀:
新!Excel for MySQL 编辑数据:
点击这个 Edit MySQL Data 这个功能,并且要勾上第⼆个图 “√”这个选项,就可以在Excel中修改数据后⾃动保存在数据库中(修改后的数据在Excel中⽤绿⾊填充)。
功能⼆:
追加数据到已存在的表:
今年清明节是几月几日2022点击这个功能,
选择 Automatic的选项,
断刺剧情介绍点击左下⾓的⾼级选项:
在最后⼀个选项,选中如下图所⽰:
之后就是确定了,然后
点击append,就可以实现追加数据到已存在的表,基本就是⼀分钟以内的事情,搞定,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论