从高德上同步省市区行政区划数据到本地数据库demo
本地数据库表结构:
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相关推荐
- NodeJS同步MySQL上游数据到ElasticSearch数据库中
NodeJS同步MySQL上游数据到ElasticSearch数据库中 项目地址: https://github.com/Miazzy/xdata-elasticsearchs-service.git ...
- php获取全国最新省市区行政区划数据
首先打开网址http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html,这是国家统计局发布最新省市区行政区划代码,这是 ...
- 如何在网站上同步查看BCH数据
当涉及到数字货币网络和市场时,有很多数据和资料需要同步.对于比特币现金(BCH)来说,值得庆幸的是现在还有许多专用的BCH数据网站,这些网站可轻松理解网络统计数据和市场指标的直观表示. 在早期,很难找 ...
- 2021全国省市区行政区划数据接口
api是高德地图官方的,其中台湾省,市区行政区划数据没有提供,文末有我从别处整理了json数据. public function setAddressFather(){$province = [];$ ...
- 微信小程序云开发上传数据到云数据库
实现功能:实现对数组数据的动态更改,并能通过for循环,上传一整组数据到云数据库 代码: 1.wxml代码 <view ><view>运动症状</view> < ...
- azure云数据库_如何使用SQL Data Sync同步Azure SQL数据库和本地数据库
azure云数据库 SQL Data Sync allows you to synchronize data across multiple Azure SQL databases and on-pr ...
- MySQL通过数据文件恢复数据库
问题: 电脑的系统坏了,得重新安装系统.此时的 MySQL 也无法使用了.只能将 MySQL 的数据拿出来. 但是把数据文件夹覆盖新系统上的 MySQL 数据文件夹,启动之后居然报错!!! 解决办法: ...
- 微信小程序取本地数据库数据(实测有图)
测试效果如下: 本实验主要分为如下几个步骤: 一.安装数据库 二.安装PHP+Apache 三.编辑微信小程序代码 前两项的简单介绍在如下连接: PHP+Apache 四.本文主要介绍第三项的内容 需 ...
- 微信小程序与本地数据库的进行基础数据交互的案例——使用Java后台
微信小程序与本地数据库的进行基础数据交互的案例--使用Java后台 案例介绍 本地数据库储存用户信息表 后台Java访问数据库,获得需要数据 小程序端访问服务器 环境配置及需要的项目代码资源: 案例介 ...
最新文章
- cocos2d-x 音效中断问题
- Nature:iHMP之“微生物组与炎症性肠病”
- Django models文件模型变更注意事项(表结构的修改)
- ajax的请求参数详解以及前后台交互详解
- Python之包管理工具
- jmeter中变量的作用范围_Jmeter参数化方式总结
- 服务器消息机制实现--记录
- bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(状压+BFS)
- oracle ora12514错误,【ORACLE】提示ORA-12514错误处理
- windows程序设计之编写应用程序,当按下鼠标左键并在窗口中移动时,窗口中鼠标所经历的个点颜色设置为黑色
- python代码画人物_用Python+Gephi画《人民的名义》人物关系图
- windows截图指令命令/cmd中截图指令
- python实现图像识别水果_使用Python实现基于图像识别的iOS自动化测试
- Linux 阻塞和非阻塞 IO 实验
- 让最新免费版WPS支持Office VBA
- 三维比例导引 matlab,三维比例导引律(源程序)
- Android 高德地图定位
- MySQL 数据库之 MMM 高可用架构构建
- Sql语句--日期函数用法
- 打工还是创业?思路决定出路!
热门文章
- mysql使用混合引擎如何,mysql – 使用MyISAM和InnoDB引擎的数据库的一致逻辑备份...
- 惊呆了!瞬间扩容10T空间,直接将阿里云盘变本地硬盘!还能这样玩阿里云盘?
- 三篇ICLR2022与时间图序列相关的研究工作
- php工程师有证吗,php工程师证有用吗
- C# 14440 125K串口 rfid门禁
- CAD中怎么定义视口?CAD视口定义教程
- 软考报名已全部截止,疫情之下,这些要求不满足不得进入考场
- 纯二代测序从头组装基因组(基础版)
- 为智能家居赋能,雄迈信息发布4G消费类安防模组
- 如何做新品发布会直播(新品推介会直播)基于云直播平台