想要直接拿MySQL地区sql文件的,直接跳到文章末尾获取

前言

之前也写过类似的获取方式,是从国家统计局获取5级地区信息,方法也比较麻烦,在实际使用过程中,也很少遇到要精确到5级的情况,所以,这次就更新一下,如何获取三级地区信息。

1、获取数据

进入高德地图的官网,下载到我们需要的数据:高德地图官网

我当时的获取位置是:开发支持==>web端==>地图JS API,拉到最下面,就能看到相关下载链接,点击后,就是上面图片的位置。

下载后,将得到一个citycode.xlsx的Excel文档,这个文档不能直接使用,需要做一下转换,将Excel变成csv文件,才能做进一步的操作。

2、数据处理

在Windows电脑上,将上面的citycode.xlsx文件打开,另存为csv文件,注意是逗号分隔的;

最后还需要调整一下编码格式,可以用记事本等工具把导出的citycode.csv文件打开,重新保存一下,保存的时候,选择UTF-8的中文编码格式,得到最后的citycode2.csv文件;

做完上述的步骤之后,就可以导入到数据库中了,关于如何导入,有两种方式:

一、参照我之前写的一篇博文:MySQL导入导出csv文件,用命令导入

二、用Navcat工具导入,步骤如下:

1、选择一个数据库,在table选项上右键==>Import Wizard

2、选择CSV File(*.csv),点击Next

3、Improt From选择我们上面的citycode2.csv,编码格式UTF-8(65001)

4、选择行分隔符为CRLF(Windows系统用的是这个,鉴于我们导出的CSV文件也是office导出的,office又是运行在Windows上的,所以这里不会有变化),分隔符用默认的逗号,如果不放心,自己再打一个英文逗号

5、之后就可以一直下一步了,最后确认导入。

6、最后,我们得到一张citycode2的数据库表,如下:

3、信息整理

我们拿到的这么一张数据库表,并不能直接使用,像地区等级,上下级等等的信息都没有,所以还需要加工处理一下才能使用

我这边是写了一个函数,将数据全部清理了一遍,导入到新的地区表中了,下面是新建的数据库表,以及我编写的函数:

CREATE TABLE `sys_position` (`id` int(11) NOT NULL AUTO_INCREMENT,`area_name` varchar(255) DEFAULT NULL COMMENT '地区名称',`area_code` int(11) DEFAULT NULL COMMENT '地区编码',`city_code` varchar(11) DEFAULT NULL COMMENT '城市编码',`level` tinyint(1) DEFAULT NULL COMMENT '地区等级',`area_index` varchar(255) DEFAULT NULL COMMENT '地区索引',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3537 DEFAULT CHARSET=utf8mb4;
drop function if exists create_city;
delimiter $$
create function create_city(provinceCode varchar(11))
returns varchar(20)
begindeclare intProvinceCode int(11);declare intCityCode int(11);declare loopTimes int(11) default 0;declare areaCityCode varchar(11);declare i int(11);declare tempPage int(11) default 0;declare countyIndex varchar(36);set intProvinceCode = CONVERT(provinceCode,SIGNED);-- 当前省下面有多少个市select COUNT(1) into loopTimes from citycode2 where adcode between intProvinceCode and intProvinceCode+10000 and substring(adcode,3) != "0000" and substring(adcode,5) ="00";SET i = 1;-- 1.1先插入市的数据insert into sys_position (area_name,area_code,city_code,`level`) select area_name,adcode,citycode,2 from citycode2 where adcode between intProvinceCode and intProvinceCode+10000 and substring(adcode,3) != "0000" and substring(adcode,5) ="00";-- 1.2补充市的上级地区索引update sys_position set area_index=provinceCode where area_code between intProvinceCode and intProvinceCode+10000 and substring(area_code,3) != "0000" and substring(area_code,5) ="00";-- 2循环更新县的数据WHILE i <= loopTimes DOSET tempPage = i-1;-- 2.1获取市的编码 select adcode into areaCityCode from citycode2 where adcode between intProvinceCode and intProvinceCode+10000 and substring(adcode,3) != "0000" and substring(adcode,5) ="00" limit tempPage,1;SET intCityCode = CONVERT(CONCAT(substring(areaCityCode,3,2),"00"),SIGNED);SET intCityCode = intProvinceCode+intCityCode;-- 2.2插入县的数据insert into sys_position (area_name,area_code,city_code,`level`) select area_name,adcode,citycode,3 from citycode2 where adcode between intCityCode and intCityCode+100 and substring(adcode,3) != "0000" and substring(adcode,5) !="00";-- 2.3补充县的上级地区索引 这里需要循环取出SET countyIndex = CONCAT(provinceCode,",",areaCityCode);update sys_position set area_index=countyIndex where area_code between intCityCode and intCityCode+100 and substring(area_code,3) != "0000" and substring(area_code,5) !="00";SET i = i + 1;END WHILE;-- 补处理没有市信息,直接是区级别的-- 3.1 如果省下面一个市(5-6位是0)也没有 将区级别的直接归为市IF loopTimes = 0 THENinsert into sys_position (area_name,area_code,city_code,`level`,area_index) select area_name,adcode,citycode,2,provinceCode from citycode2 where adcode between intProvinceCode and intProvinceCode+10000 and substring(adcode,3) != "0000";-- 3.2 如果是省,取上述循环结束后的地区编码,表格是按照数字增长的,所以将没有上级市的“市”也划为市ELSEinsert into sys_position (area_name,area_code,city_code,`level`,area_index) select area_name,adcode,citycode,2,provinceCode from citycode2 where adcode between intCityCode+100 and intProvinceCode+10000 and substring(adcode,3) != "0000";   END IF;return 'hello';
end$$
delimiter ;

最后执行了一条sql语句:

select create_city(adcode) from citycode2 where substring(adcode,3)="0000" and adcode!="100000" and adcode!="900000"

函数的内容有点复杂,这里就不详细去讲解了,有兴趣的人可以分析一下

另外需要补充的一点是,从原表到新表,少了1条数据,我检查了很久也不知道是哪里出了问题,由于影响很小,我这里也就没管了,有小伙伴看完之后,帮忙修复上述函数的漏洞或者补充出来这1条数据,也是极好的。

最后,大家有什么不懂的或者其他需要交流的内容,也可以进入我的QQ讨论群一起讨论:654331206

文件下载地址:链接:https://pan.baidu.com/s/11MgGykeUup-pv0v4PU5Tqg  密码:0nd5

最新的省市区三级地区MySQL数据库,附带获取方法相关推荐

  1. echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...

    关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...

  2. MySQL数据库多种安装方法及企业级安装实践

    本文来自老男孩老师第三本书籍著作<老男孩的MySQL私房菜>第三章内容分享! 3.1 MySQL数据库的安装方法及选择 在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系 ...

  3. linux php 安装mysql数据库_linux php安装mysql数据库有哪些方法

    linux php安装mysql数据库有哪些方法 发布时间:2020-07-15 15:25:56 来源:亿速云 阅读:74 作者:Leah 本篇文章给大家分享的是有关linux php安装mysql ...

  4. python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  5. MySQL兼容服务器_服务器不支持 MySql 数据库的解决方法

    php.ini文件没有参数没有配置正确 解决方法: (1) 打开php.ini文件,找到: extension_dir = "./" 将其改为: extension_dir = & ...

  6. php 获取mysql大小限制_php计算整个mysql数据库大小的方法

    本文实例讲述了php计算整个mysql数据库大小的方法.分享给大家供大家参考.具体如下: 这里用MB,KB或者GB的格式返回计算结果. function CalcFullDatabaseSize($d ...

  7. python django mysql结果获取_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  8. mysql 数据库编码怎么看,查看数据库编码_查看mysql编码方式 mysql数据库编码查看方法...

    摘要 腾兴网为您分享:查看mysql编码方式 mysql数据库编码查看方法,桌面日历,智能互联,政务易,优美图等软件知识,以及pptv版,广东省app,京东钱包app,星露谷物语补丁,51管家,翡翠出 ...

  9. 安装mysql数据库及问题解决方法

    安装mysql数据库及问题解决方法 参考文章: (1)安装mysql数据库及问题解决方法 (2)https://www.cnblogs.com/zhoading/p/11538329.html (3) ...

  10. jq获取内容ajax传递数据库,使用php和jquery ajax从mysql数据库中获取数据

    我想使用php和jquery ajax从mysql数据库中获取数据." process.php"是连接到数据库并获取mysql数据的php文件.当它单独运行时它可以工作,但是当使用 ...

最新文章

  1. C#取整函数Math.Round、Math.Ceiling和Math.Floor
  2. 为什么element的el-backtop会不管用,来看这里!
  3. 限制对web路径的访问
  4. 更新cocoapods相关问题
  5. 腾讯云Nginx配置https
  6. 专业软件 —— Adobe Audition
  7. Linux核心应用命令速查
  8. Servlet--ListenerFilter
  9. VMware unlocker解锁步骤
  10. WoShop分销积分拼团裂变APP小程序商城全开源无加密商城源码
  11. 巨人肩膀_如何站在巨人的肩膀上
  12. 软件测试的概括及流程
  13. java容器doc_java容器组件
  14. 提高效率必备,EdrawMax亿图图示教你快速制作图表!
  15. ios开发 静音键设置_IOS 静音开关检测
  16. springcloud:微服务涉及哪些技术、有哪些核心组件(二)
  17. 异构计算(Heterogeneous Compute)
  18. 剑指offer:数组
  19. 晶体管问世;科幻巨匠诞生 | 历史上的今天
  20. Python中实现文本分类(附代码、数据集)

热门文章

  1. 计算机网络管理员期末,计算机网络管理员期中考试统一试题(A)
  2. 今日干货:PDF转Word工具有哪些?
  3. jabber服务器搭建
  4. qq游戏大厅+android,手机QQ游戏大厅Android客户端体验
  5. 用java语言写出青蛙的身份_第三章 JAVA 语言基础
  6. stm32+rx8025
  7. 实用工具SDelete
  8. 2020 全国省份数据整理
  9. wordpres报错sfile_exists() [function.file-exists]: File name is longer than the maximum allowed
  10. 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)