需求:數(shù)據(jù)庫表(向每日可保養(yǎng)箱列表的作業(yè)日期插入時間冕碟,時間是從excel中獲得猩系,excel中有不同箱號的多個日期绍申,取最新的日期即可)
1.在數(shù)據(jù)庫中新建一張臨時表(t_ls_maintain_list),包括的字段(guid吩愧、box_no芋酌、work_time),其中work_time的數(shù)據(jù)類型是varchar耻警。
2.調(diào)整excel中不規(guī)范的日期(比如2020.3.2)隔嫡,用/全局替換.甸怕,可以得到類似于2020/3/2這樣的日期格式甘穿。
3.在excel中新建一行,把數(shù)據(jù)庫表中對應(yīng)的字段寫入
4.將excel表格導(dǎo)入到當(dāng)前數(shù)據(jù)庫表中
5.生成對應(yīng)的guid
update t_ls_maintain_list set guid = uuid()
6.由于一個箱號可能對應(yīng)多個保養(yǎng)時間梢杭,所以需要去重取日期最新的那個記錄
SELECT * FROM t_ls_maintain_list ls WHERE ls.work_time = (SELECT max(work_time) FROM t_ls_maintain_list WHERE ls.box_no = box_no) ORDER BY ls.box_no
ps:這里要注意一個日期格式問題温兼,如果日期格式是2020/3/2這種的,在取最新日期的時候需要改成2020/03/02這種武契,不然有可能取不到最新的日期
7.將當(dāng)前去完重的數(shù)據(jù)導(dǎo)出到excel
8.將當(dāng)前t_ls_maintain_list中的數(shù)據(jù)全部刪除
delete from t_ls_maintain_list
9.再將導(dǎo)出的去了重的excel數(shù)據(jù)重新導(dǎo)入到t_ls_maintain_list表中
10.同庫不同表之間的更新操作
UPDATE t_zy_maintain_day_list
INNER JOIN t_ls_maintain_list ON t_ls_maintain_list.box_no = t_zy_maintain_day_list.box_no
SET t_zy_maintain_day_list.work_time = t_ls_maintain_list.work_time
這樣t_zy_maintain_day_list表中的作業(yè)時間就能拿到excel中的最新日期值了
容易出錯的地方:excel轉(zhuǎn)csv的時候會導(dǎo)致箱號是0開頭的直接省略了0募判,比如箱號是0010的,轉(zhuǎn)成csv之后咒唆,箱號就變成了10届垫,這個不利于后面更新操作的時候箱號一一對應(yīng)匹配,所以就直接用excel導(dǎo)入數(shù)據(jù)庫即可