本地数据库表结构:

create table tbl_sys_area_bak
(id          int                                  not nullprimary key,parent_ids  varchar(255)                         null comment '所有上级(1,2,3)',parent_id   varchar(32)                          null comment '地区上级(3)',area_name   varchar(32)                          not null comment '地区名称(深圳市)',full_name   varchar(128)                         not null comment '地区全称(中国,广东省,深圳市)',level       int                                  not null comment '地区级别',code        varchar(100)                         null comment '区域编码',sort        int                                  not null comment '排序',remarks     varchar(255)                         null comment '备注',create_id   int                                  not null comment '创建者id',update_id   int                                  not null comment '更新者id',create_date datetime   default CURRENT_TIMESTAMP null comment '创建日期',update_date datetime   default CURRENT_TIMESTAMP null comment '更新日期',del_flag    tinyint(1) default 0                 not null comment '删除标记(Y删除,N未删除)',constraint index_area_codeunique (code)
)comment '地区表;

  注意想用高德开放平台的api,需要先去该平台注册一个应用,我这里用的java,申请的是web服务平台的key。

粘贴下面代码,替换上自己的key之后,就可以将高德的行政区划数据导入自己本地数据库中。

注意:在跑该demo的过程中,控制台上可能会提示有部分数据导入失败,原因是本地数据库的等级设为了3级(省、市、区/县),有一部分省直辖县级市等级分为了2级(例如:五指山市,仙桃市、天门市……),该县级市下辖乡镇所用的adcode是该县级市的adcode。数据库用adcode作为了表的id,所以当插入了县级市的信息之后,再插入该县级市下辖的乡镇的时候,发现id(即adcode)重复,所以插入失败。这个可以根据自己业务需要,调整表结构来避免这个问题

 @ResponseBody@GetMapping("/t1")public Object t1() {//获取所有得的省份List<String> tblSysAreas = List.of("河北省","山西省","辽宁省","吉林省","黑龙江省","江苏省","浙江省","安徽省","福建省","江西省","山东省","河南省","湖北省","湖南省","广东省","海南省","四川省","贵州省","云南省","陕西省","甘肃省","青海省","台湾省","北京市","天津市","上海市","重庆市","内蒙古自治区","广西壮族自治区","西藏自治区","宁夏回族自治区","新疆维吾尔自治区","香港特别行政区","澳门特别行政区");for (int i = 0; i < tblSysAreas.size(); i++) {int a = i + 1;getAreaInfo(tblSysAreas.get(i), a);}return scsDataRv("插入成功");}private void getAreaInfo(String areaName, int sort) {//此key为高德开放平台上申请的应用String key = "10901ba132asflwo4cccde7b122bdd69";String url = "https://restapi.amap.com/v3/config/district?"+ "keywords=" + areaName+ "&subdistrict=3"+ "&key=" + key;JSONObject jsonObject = null;try {String response = httpApiService.doGet(url);jsonObject = JSONUtil.parseObj(response);} catch (Exception e) {e.printStackTrace();System.out.println(areaName + "没有获取成功");}JSONObject provinceInfo = null;try {//第一层,省JSONArray jsonArray = jsonObject.getJSONArray("districts");provinceInfo = JSONUtil.parseObj(jsonArray.get(0));//插入省信息insertProvince(provinceInfo, sort);} catch (Exception e) {e.printStackTrace();System.out.println("省份插入异常");}//第二层,市JSONArray cityInfos = provinceInfo.getJSONArray("districts");int citySort = 0;for (int i = 0; i < cityInfos.size(); i++) {JSONObject cityInfo = JSONUtil.parseObj(cityInfos.get(i));++citySort;try {//插入市信息insertCityInfo(provinceInfo, cityInfo, citySort);} catch (Exception e) {e.printStackTrace();System.out.println("城市信息插入异常");}//区信息JSONArray areaList = JSONUtil.parseArray(cityInfo.get("districts"));int areaSort = 0;for (int i1 = 0; i1 < areaList.size(); i1++) {JSONObject areaInfo = JSONUtil.parseObj(areaList.get(i1));++areaSort;try {//插入区信息insertAreaInfo(provinceInfo, cityInfo, areaInfo, areaSort);} catch (Exception e) {e.printStackTrace();System.out.println("区域信息插入异常");}}}}private void insertAreaInfo(JSONObject provinceInfo, JSONObject cityInfo, JSONObject areaInfo, int sort) {TblSysAreaBak build = TblSysAreaBak.builder().id(Integer.valueOf(String.valueOf(areaInfo.get("adcode")))).code((String) areaInfo.get("adcode")).sort(sort).updateId(1).createId(1).level(3).parentId((String) cityInfo.get("adcode")).parentIds("0,".concat((String) provinceInfo.get("adcode")).concat(",").concat((String) cityInfo.get("adcode")).concat(",").concat((String) areaInfo.get("adcode"))).fullName("中国,".concat((String) provinceInfo.get("name")).concat(",").concat((String) cityInfo.get("name")).concat(",").concat((String) areaInfo.get("name"))).delFlag(DelFlagEnum.N.getDelKey()).areaName((String) areaInfo.get("name")).build();tblSysAreaBakService.insert(build);}private void insertCityInfo(JSONObject provinceInfo, JSONObject cityInfo, int sort) {TblSysAreaBak build = TblSysAreaBak.builder().id(Integer.valueOf(String.valueOf(cityInfo.get("adcode")))).code((String) cityInfo.get("adcode")).sort(sort).updateId(1).createId(1).level(2).parentId((String) provinceInfo.get("adcode")).parentIds("0,".concat((String) provinceInfo.get("adcode")).concat(",").concat((String) cityInfo.get("adcode"))).fullName("中国,".concat((String) provinceInfo.get("name")).concat(",").concat((String) cityInfo.get("name"))).delFlag(DelFlagEnum.N.getDelKey()).areaName((String) cityInfo.get("name")).build();tblSysAreaBakService.insert(build);}private void insertProvince(JSONObject provinceInfo, int sort) {TblSysAreaBak build = TblSysAreaBak.builder().id(Integer.valueOf(String.valueOf(provinceInfo.get("adcode")))).code((String) provinceInfo.get("adcode")).sort(sort).updateId(1).createId(1).level(1).parentId("0").parentIds("0,".concat((String) provinceInfo.get("adcode"))).fullName("中国,".concat((String) provinceInfo.get("name"))).delFlag(DelFlagEnum.N.getDelKey()).areaName((String) provinceInfo.get("name")).build();tblSysAreaBakService.insert(build);}

从高德上同步省市区行政区划数据到本地数据库demo相关推荐

  1. NodeJS同步MySQL上游数据到ElasticSearch数据库中

    NodeJS同步MySQL上游数据到ElasticSearch数据库中 项目地址: https://github.com/Miazzy/xdata-elasticsearchs-service.git ...

  2. php获取全国最新省市区行政区划数据

    首先打开网址http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html,这是国家统计局发布最新省市区行政区划代码,这是 ...

  3. 如何在网站上同步查看BCH数据

    当涉及到数字货币网络和市场时,有很多数据和资料需要同步.对于比特币现金(BCH)来说,值得庆幸的是现在还有许多专用的BCH数据网站,这些网站可轻松理解网络统计数据和市场指标的直观表示. 在早期,很难找 ...

  4. 2021全国省市区行政区划数据接口

    api是高德地图官方的,其中台湾省,市区行政区划数据没有提供,文末有我从别处整理了json数据. public function setAddressFather(){$province = [];$ ...

  5. 微信小程序云开发上传数据到云数据库

    实现功能:实现对数组数据的动态更改,并能通过for循环,上传一整组数据到云数据库 代码: 1.wxml代码 <view ><view>运动症状</view> < ...

  6. azure云数据库_如何使用SQL Data Sync同步Azure SQL数据库和本地数据库

    azure云数据库 SQL Data Sync allows you to synchronize data across multiple Azure SQL databases and on-pr ...

  7. MySQL通过数据文件恢复数据库

    问题: 电脑的系统坏了,得重新安装系统.此时的 MySQL 也无法使用了.只能将 MySQL 的数据拿出来. 但是把数据文件夹覆盖新系统上的 MySQL 数据文件夹,启动之后居然报错!!! 解决办法: ...

  8. 微信小程序取本地数据库数据(实测有图)

    测试效果如下: 本实验主要分为如下几个步骤: 一.安装数据库 二.安装PHP+Apache 三.编辑微信小程序代码 前两项的简单介绍在如下连接: PHP+Apache 四.本文主要介绍第三项的内容 需 ...

  9. 微信小程序与本地数据库的进行基础数据交互的案例——使用Java后台

    微信小程序与本地数据库的进行基础数据交互的案例--使用Java后台 案例介绍 本地数据库储存用户信息表 后台Java访问数据库,获得需要数据 小程序端访问服务器 环境配置及需要的项目代码资源: 案例介 ...

最新文章

  1. cocos2d-x 音效中断问题
  2. Nature:iHMP之“微生物组与炎症性肠病”
  3. Django models文件模型变更注意事项(表结构的修改)
  4. ajax的请求参数详解以及前后台交互详解
  5. Python之包管理工具
  6. jmeter中变量的作用范围_Jmeter参数化方式总结
  7. 服务器消息机制实现--记录
  8. bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(状压+BFS)
  9. oracle ora12514错误,【ORACLE】提示ORA-12514错误处理
  10. windows程序设计之编写应用程序,当按下鼠标左键并在窗口中移动时,窗口中鼠标所经历的个点颜色设置为黑色
  11. python代码画人物_用Python+Gephi画《人民的名义》人物关系图
  12. windows截图指令命令/cmd中截图指令
  13. python实现图像识别水果_使用Python实现基于图像识别的iOS自动化测试
  14. Linux 阻塞和非阻塞 IO 实验
  15. 让最新免费版WPS支持Office VBA
  16. 三维比例导引 matlab,三维比例导引律(源程序)
  17. Android 高德地图定位
  18. MySQL 数据库之 MMM 高可用架构构建
  19. Sql语句--日期函数用法
  20. 打工还是创业?思路决定出路!

热门文章

  1. mysql使用混合引擎如何,mysql – 使用MyISAM和InnoDB引擎的数据库的一致逻辑备份...
  2. 惊呆了!瞬间扩容10T空间,直接将阿里云盘变本地硬盘!还能这样玩阿里云盘?
  3. 三篇ICLR2022与时间图序列相关的研究工作
  4. php工程师有证吗,php工程师证有用吗
  5. C# 14440 125K串口 rfid门禁
  6. CAD中怎么定义视口?CAD视口定义教程
  7. 软考报名已全部截止,疫情之下,这些要求不满足不得进入考场
  8. 纯二代测序从头组装基因组(基础版)
  9. 为智能家居赋能,雄迈信息发布4G消费类安防模组
  10. 如何做新品发布会直播(新品推介会直播)基于云直播平台