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数据库

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

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

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

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

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,就可以实现追加数据到已存在的表,基本就是一分钟以内的事情,搞定,

 

猜你喜欢

转载自www.cnblogs.com/pingzizhuanshu/p/10584882.html
今日推荐