背景:由于地址库的变更,导致历史的用户地址与现用的地址库不对应,比如code变动,归属变动,增删等。

 

解决思路:如果是地址库存在于mysql里面,数据格式如下:

用户地址表:

 

地址库表:

 

 

 

则用sql可以查询到异常的地址:

SELECT    addr_id,ua FROM    ( SELECT substring_index( area, ':',- 1 ) AS ua,addr_id FROM sysuser_user_addrs GROUP by ua ) uadd WHERE    ua NOT IN (    SELECT        CONCAT_WS( '/', a.region_id, b.region_id, c.region_id )     FROM        sdb_ectools_regions a        LEFT JOIN sdb_ectools_regions b ON a.region_id = b.p_region_id    LEFT JOIN sdb_ectools_regions c ON b.region_id = c.p_region_id     )

 

如果是地址库不存在于mysql,假设是用json存在于前端,则可以用excel的方式来处理

前端地址json如下:

 

我们用程序导出为cvs

<?php$dir = dirname(__FILE__);  //找出当前脚本所在路径require $dir.'/vendor/autoload.php';//添加读取excel所需的类文件$objPHPExcel = new PHPExcel();                     //实例化一个PHPExcel()对象$objSheet = $objPHPExcel->getActiveSheet();        //选取当前的sheet对象$objSheet->setTitle('helen');                      //对当前sheet对象命名//常规方式:利用setCellValue()填充数据$objSheet->setCellValue("A1","张三")->setCellValue("B1","李四");   //利用setCellValues()填充数据//取巧模式:利用fromArray()填充数据$array = array(    array("","B1","张三"),    array("","B2","李四"));$data = file_get_contents("./region.json");$array = json_decode($data,true);$count = 1;foreach ($array as $key=>$val){    foreach ($val['children'] as $k=>$v){        foreach ($v['children'] as $w){            $objSheet->setCellValue("A".$count,$val['id']);            $objSheet->setCellValue("B".$count,$v['id']);            $objSheet->setCellValue("C".$count,$w['id']);            $count++;        }    }}//print_r($array);//$objSheet->fromArray($array);  //利用fromArray()直接一次性填充数据$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');   //设定写入excel的类型$objWriter->save($dir.'/test.xlsx');

 

然后导出用户的地址:

SELECT substring_index( area, ':',- 1 ) AS ua FROM sysuser_user_addrs GROUP by ua

 

然后通过excel的vlookup函数进行对比

 

红色框为异常地址。 

 

©著作权归作者所有:来自51CTO博客作者wx5eba5c8cb0b6f的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. spring boot 集成Swagger
  2. 4.26号课堂笔记( 三次握手四次断开)
  3. 如何设置 Centos7 为固定ip地址(详细教程)
  4. eNSP:实现不同网段主机之间的通信(静态路由)
  5. eNSP:实现不同网段主机之间的通信(直连路由)
  6. 爬虫教程(爬取斗图网)---详解
  7. C语言判断大端小端
  8. makefile使用.lds链接脚本以及 常用命令 解析
  9. jira如何部署

随机推荐

  1. 学习分布式不会BASE理论?看这篇文章保证能
  2. 一个面试必问的java基础知识点:java中的异
  3. java小白到架构师学习路线【3.0版】
  4. 面试官:你了解java中的四种引用嘛?
  5. 面试官:给我手写一个哈夫曼编码(使用java语
  6. React List Diff
  7. Android-webview和js脚本语言交互的时候
  8. 面试官让我手写一个平衡二叉树,我当时就笑
  9. JSP面试题都在这里
  10. android播放音乐的三种方法实现