一 业务背景新版本中新建了一个项目的角色表,即每个项目都拥有几个角色,原来历史项目是没有角色的,这就要求使用脚本对表中的历史项目进行处理,

业务需求:每个项目都要有三个角色:

表 : pm_project  项目表

pm_role   项目角色表

具体业务比较复杂,这里只考虑历史项目的直属角色的初始化,不考虑二级直属等等.

思路是准备固定的角色模板数据,然后与项目表关联产生笛卡尔积,最后插入;

二  sql

首先准备模板数据:

/*-- 准备模板默认角色 --*/
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"XMJL_0","项目经理","-1",0,1);
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"GSSHR_0","工时审核人","-1",0,3);
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"XMCY_0","项目成员","-1",0,2);

然后,创建临时表,注意,这里必须要使用临时表,否则如果直接用本表关联的话,一起执行速度快的话会导致order_num排序字段都是1,分开执行就没问题,这里类似于UUID() 与lpad()的区别,建议都使用lpad,这里也是一样的

/*-- 准备临时表 --*/
CREATE TABLE pm_role_temp like pm_role;/*--初始化角色--*/
insert into pm_role_temp (id,role_code,role_name,project_id,is_del,order_num)
(select
lpad(UUID_SHORT(),32,UUID_SHORT()),
t2.role_code,
t2.role_name,
t1.id,
t2.is_del,
t2.order_num
FROM pm_project t1,pm_role t2 where t2.project_id="-1"); insert into pm_role(select * from pm_role_temp); DROP TABLE pm_role_temp;

先把数据插入到临时表中,再插入到角色表中,最后删除临时表!

这很简单,但是有个大坑,因为图省事,刚开始用了本表,即直接用角色表关联,自己开发库和测试库都没问题,但是最后生产库就是有问题,排序都是1,所以保险起见,还是用临时表,记录一下!

这种情况在UUID() 和lpad()上也吃过亏,建议大家以后都用lpad(),然后如果有二级直属,即角色表中每个角色还有固定的应用什么的,继续临时表就可!

mysql处理旧数据-使用模板以及临时表,不建议直接使用本表!!的更多相关文章

  1. mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中

    使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...

  2. MySQL查询关键数据方法

    MySQL查询关键数据方法 操作表的SQL语句补充 1.修改表名 alter table 表名 reame 新表名: 2.新增字段名 alter table 表名 add 字段名 字段类型(数字) 约 ...

  3. 提高MYSQL百万条数据的查询速度

    提高MYSQL百万条数据的查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 nul ...

  4. mysql 插入/更新数据

    mysql 插入/更新数据 INSERT 语句 1.一次性列出全部字段的值,例如: INSERT INTO student VALUES('Chenqi','M', 29); INSERT INTO ...

  5. mysql优化, 删除数据后物理空间未释放(转载)

    mysql优化, 删除数据后物理空间未释放(转载) OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTI ...

  6. MYSQL百万级数据,如何优化

    MYSQL百万级数据,如何优化     首先,数据量大的时候,应尽量避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引,建索引可以大大加快数据的检索速度.但是,有些情况索引是 ...

  7. (MySQL里的数据)通过Sqoop Import Hive 里 和 通过Sqoop Export Hive 里的数据到(MySQL)

    Sqoop 可以与Hive系统结合,实现数据的导入和导出,用户需要在 sqoop-env.sh 中添加HIVE_HOME的环境变量. 具体,见我的如下博客: hadoop2.6.0(单节点)下Sqoo ...

  8. (MySQL里的数据)通过Sqoop Import HDFS 里 和 通过Sqoop Export HDFS 里的数据到(MySQL)(五)

    下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出 一.MySQL里的数据通过Sqoop import HDFS 它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示. ...

  9. Mysql学习总结(35)——Mysql两千万数据优化及迁移

    最近有一张2000W条记录的数据表需要优化和迁移.2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升.不过这些数据有大量的冗余字段和错误信息,极不 ...

随机推荐

  1. 【loj6145】「2017 山东三轮集训 Day7」Easy 动态点分治+线段树

    题目描述 给你一棵 $n$ 个点的树,边有边权.$m$ 次询问,每次给出 $l$ .$r$ .$x$ ,求 $\text{Min}_{i=l}^r\text{dis}(i,x)$ . $n,m\le ...

  2. 【刷题】BZOJ 4998 星球联盟

    Description 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流.但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条太 ...

  3. Docker跟一般的虚拟机有什么区别

    这是StackOverflow上的一个问题及其回答的翻译(原文:Docker.io跟一般的虚拟机有什么区别?).原文主要回答了三个问题: 1. Docker.io的基本原理是什么?2. 为什么在doc ...

  4. 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构

    VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...

  5. 【费用流】【网络流24题】【P1251】 餐巾计划问题

    Description 一个餐厅在相继的 \(N\) 天里,每天需用的餐巾数不尽相同.假设第 \(i\) 天需要 \(r_i\)块餐巾.餐厅可以购买新的餐巾,每块餐巾的费用为 \(p\) 分;或者把旧 ...

  6. Centos 7安装Python3.6

    1> 安装python3.6可能使用的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel ...

  7. 【题解】【THUSC 2016】成绩单 LOJ 2292 区间dp

    Prelude 快THUWC了,所以补一下以前的题. 真的是一道神题啊,网上的题解没几篇,而且还都看不懂,我做了一天才做出来. 传送到LOJ:(>人<:) Solution 直接切入正题. ...

  8. bzoj 2120

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 6430  Solved: 2562[Submit][Status][Discuss] ...

  9. LINUX的文件按时间排序

    转载 2014年12月29日 00:49:23 20298 > ls -alt # 按修改时间排序 > ls --sort=time -la # 等价于> ls -alt > ...

  10. Macvlan技术

    参考博客:https://blog.csdn.net/dog250/article/details/45788279 一.MACVLAN虚拟网卡技术 MACVLAN技术可谓是提出一种将一块以太网卡虚拟 ...