数据变形总结:索引,执行效率以及SQL语句

最近做了一次数据变形的需求,所谓数据变形就是客户对一些数据转到测试环境,为了保护一些敏感数据,就对这些数据按照一定规则转换一下,保证及时流出也没啥问题吗,比如姓名,电话号码,身份证号码什么的。
(1)变形思路
就是导出数据文件然后变形数据,再导进去表中(可以用replace操作,这样你就不用清空这个表)。
变形操作可以在导出的时候通过SQL语句将导出的数据变换成自己想要的,还有一种方式就是将文件,对文件文本进行操作替换转型(可以通过分隔符,然后再找对应的第几个字段)。
我采用的是SQL语句导出进行变形,一张表导入导出两步就解决了,但是我觉得那个对数据文件文本进行操作,多张表的情况有优势。

(2)SQL语句变形一些不是主键的字段
按照它的变形规则,像电话号码转换为88888888。如果你的表,这个字段不是主键,转换成一个其实没什么关系。

替换
直接替换
除了直接替换有时候我们会用到用别的字段和字符串拼接一个字段,contact函数各个数据库支持的不一样,像DB2支持两个拼接,而有的数据库支持多个字段拼接,例如
这是DB2的写法,DB2contact只接受两个字段,多个字段的话可能要一层一层套起来

我们要替换一部分
这里写图片描述
利用case
这里写图片描述
给一个完整点的导出例子
这里写图片描述
(3)采用这种方式,有的时候会遇到一个问题,就是执行效率太慢我们可以通过对应的字段加索引来解决。
我试过一个更新的,没加索引不到十万条数据要跑二三十分钟(以为SQL写的复杂点,where的集合也是根据条件select的),加了索引变得很快不到几十秒。另外DB2数据库的主键,是默认加了索引的,你可以通过语句查一下这个表的索引验证一下。

(4)对文本进行操作变形
这件要用到awk命令了,但是也要根据你倒数的文件格式,你的文件格式没有分隔符或者说没有你作为条件的分隔符,也是没用的。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/FeiChangWuRao/article/details/80652250
今日推荐