当前位置: 首页 > article >正文

如何将中国行政区划数据迁移到MySQL数据库?

如何将中国行政区划数据迁移到MySQL数据库【免费下载链接】Administrative-divisions-of-China中华人民共和国行政区划省级省份、 地级城市、 县级区县、 乡级乡镇街道、 村级村委会居委会 中国省市区镇村二级三级四级五级联动地址数据。项目地址: https://gitcode.com/gh_mirrors/ad/Administrative-divisions-of-China你是否正在开发需要中国行政区划数据的应用无论是电商平台的地址选择器、数据分析系统的地域统计还是管理系统的区域划分功能准确完整的行政区划数据都是关键基础。本文将带你从零开始将开源的中国行政区划数据项目迁移到MySQL数据库构建一个稳定、高效的五级联动数据系统。为什么选择MySQL存储行政区划数据中国行政区划数据包含从省级到村级的五级结构总计超过70万条记录。SQLite虽然轻量但在高并发、多用户访问的生产环境中MySQL提供了更强大的性能、更好的并发控制和完善的备份机制。通过MySQL部署你可以获得高性能查询支持复杂联表查询和索引优化并发访问能力适合多用户同时访问的生产环境数据完整性保障完善的外键约束和数据验证易于维护成熟的备份、恢复和监控工具第一步获取并准备数据源首先克隆项目仓库并安装必要依赖git clone https://gitcode.com/gh_mirrors/ad/Administrative-divisions-of-China cd Administrative-divisions-of-China npm install项目已经预先生成了多种格式的数据文件位于dist/目录中。你会找到data.sqlite- SQLite格式的完整数据库provinces.csv- 省级行政区划CSV文件cities.csv- 地级行政区划CSV文件areas.csv- 县级行政区划CSV文件streets.csv- 乡级行政区划CSV文件villages.csv- 村级行政区划CSV文件如果CSV文件不存在可以使用项目提供的脚本生成./export_csv.sh第二步设计MySQL数据库架构与传统的五张表设计不同我们采用更灵活的层级结构设计便于查询和维护-- 创建数据库 CREATE DATABASE china_divisions DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE china_divisions; -- 统一行政区划表 CREATE TABLE administrative_divisions ( id INT AUTO_INCREMENT PRIMARY KEY, division_code VARCHAR(20) NOT NULL UNIQUE, division_name VARCHAR(100) NOT NULL, parent_code VARCHAR(20), division_level TINYINT NOT NULL COMMENT 1:省级 2:地级 3:县级 4:乡级 5:村级, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, INDEX idx_level (division_level), INDEX idx_parent (parent_code), INDEX idx_code (division_code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;这种单表设计简化了查询逻辑同时通过索引保证查询性能。division_level字段明确标识了数据层级parent_code字段建立了父子关系。第三步数据转换与导入由于原始数据分散在多个CSV文件中我们需要先将它们合并并转换格式。创建一个Python脚本完成这项工作import csv import sys def convert_csv_to_single_table(): 将五级CSV数据转换为统一格式 levels [ (provinces.csv, 1), (cities.csv, 2), (areas.csv, 3), (streets.csv, 4), (villages.csv, 5) ] with open(unified_divisions.csv, w, newline, encodingutf-8) as outfile: writer csv.writer(outfile) writer.writerow([division_code, division_name, parent_code, division_level]) for filename, level in levels: with open(fdist/{filename}, r, encodingutf-8) as infile: reader csv.reader(infile) next(reader) # 跳过标题行 for row in reader: code row[0] name row[1] parent_code None # 根据层级确定父级编码 if level 1: parent_code code[:len(code)-2] if level 5 else code[:len(code)-4] writer.writerow([code, name, parent_code, level]) if __name__ __main__: convert_csv_to_single_table()运行脚本生成统一格式的数据文件然后导入MySQL# 运行转换脚本 python convert_data.py # 导入数据到MySQL mysql -u root -p china_divisions EOF LOAD DATA LOCAL INFILE unified_divisions.csv INTO TABLE administrative_divisions FIELDS TERMINATED BY , ENCLOSED BY LINES TERMINATED BY \n IGNORE 1 ROWS (division_code, division_name, parent_code, division_level); EOF第四步验证数据完整性与质量数据导入后进行完整性检查-- 检查各级数据数量 SELECT CASE division_level WHEN 1 THEN 省级行政区划 WHEN 2 THEN 地级行政区划 WHEN 3 THEN 县级行政区划 WHEN 4 THEN 乡级行政区划 WHEN 5 THEN 村级行政区划 END AS 数据层级, COUNT(*) AS 记录数量 FROM administrative_divisions GROUP BY division_level ORDER BY division_level; -- 检查父子关系完整性 SELECT parent_level, child_level, COUNT(*) as 关系数量 FROM ( SELECT p.division_level as parent_level, c.division_level as child_level FROM administrative_divisions c LEFT JOIN administrative_divisions p ON c.parent_code p.division_code WHERE c.parent_code IS NOT NULL ) relations GROUP BY parent_level, child_level;第五步优化查询性能为常用查询场景创建索引和视图-- 创建复合索引提升查询性能 CREATE INDEX idx_level_parent ON administrative_divisions(division_level, parent_code); CREATE INDEX idx_name_search ON administrative_divisions(division_name(20)); -- 创建省级视图 CREATE VIEW provinces_view AS SELECT division_code, division_name FROM administrative_divisions WHERE division_level 1; -- 创建城市视图包含省份信息 CREATE VIEW cities_view AS SELECT c.division_code as city_code, c.division_name as city_name, p.division_code as province_code, p.division_name as province_name FROM administrative_divisions c JOIN administrative_divisions p ON c.parent_code p.division_code WHERE c.division_level 2; -- 创建存储过程获取层级数据 DELIMITER // CREATE PROCEDURE GetDivisionHierarchy(IN division_code VARCHAR(20)) BEGIN WITH RECURSIVE division_tree AS ( SELECT division_code, division_name, parent_code, division_level, 1 as depth FROM administrative_divisions WHERE division_code division_code UNION ALL SELECT p.division_code, p.division_name, p.parent_code, p.division_level, dt.depth 1 FROM administrative_divisions p JOIN division_tree dt ON p.division_code dt.parent_code ) SELECT * FROM division_tree ORDER BY depth DESC; END // DELIMITER ;第六步实际应用示例场景一地址选择器数据接口-- 获取省份列表 SELECT division_code as value, division_name as label FROM administrative_divisions WHERE division_level 1 ORDER BY division_code; -- 获取指定省份下的城市 SELECT division_code as value, division_name as label FROM administrative_divisions WHERE division_level 2 AND parent_code 44 -- 广东省代码 ORDER BY division_code; -- 获取完整地址链 SELECT GROUP_CONCAT(d.division_name ORDER BY d.division_level SEPARATOR ) as full_address FROM administrative_divisions d WHERE d.division_code IN ( SELECT division_code FROM administrative_divisions WHERE division_code 440106011 -- 示例编码 UNION SELECT parent_code FROM administrative_divisions WHERE division_code 440106011 );场景二数据统计与分析-- 统计各省城市数量 SELECT p.division_name as 省份, COUNT(c.division_code) as 城市数量 FROM administrative_divisions p LEFT JOIN administrative_divisions c ON p.division_code c.parent_code AND c.division_level 2 WHERE p.division_level 1 GROUP BY p.division_code, p.division_name ORDER BY 城市数量 DESC; -- 查找包含特定关键词的行政区划 SELECT division_code, division_name, CASE division_level WHEN 1 THEN 省 WHEN 2 THEN 市 WHEN 3 THEN 县 WHEN 4 THEN 乡 WHEN 5 THEN 村 END as 级别 FROM administrative_divisions WHERE division_name LIKE %广州% ORDER BY division_level, division_code;第七步性能优化与维护策略1. 查询缓存优化-- 启用查询缓存根据实际情况调整 SET GLOBAL query_cache_size 67108864; SET GLOBAL query_cache_type 1; -- 定期分析表统计信息 ANALYZE TABLE administrative_divisions;2. 分区策略针对大数据量如果数据量持续增长可以考虑按省份进行分区ALTER TABLE administrative_divisions PARTITION BY KEY(division_code) PARTITIONS 34; -- 按34个省级单位分区3. 定期维护任务创建维护脚本定期执行#!/bin/bash # maintenance.sh # 备份数据库 mysqldump -u root -p china_divisions backup_$(date %Y%m%d).sql # 优化表 mysql -u root -p -e OPTIMIZE TABLE china_divisions.administrative_divisions; # 更新统计信息 mysql -u root -p -e ANALYZE TABLE china_divisions.administrative_divisions;常见问题与解决方案Q1: 数据更新如何处理A: 定期从官方源获取最新数据通过TRUNCATE TABLE清空旧数据后重新导入或使用增量更新策略。Q2: 如何保证查询性能A: 合理使用索引避免全表扫描。对于频繁查询的热点数据可以考虑使用Redis缓存。Q3: 数据一致性如何保障A: 使用事务确保批量操作的原子性建立外键约束维护数据完整性。Q4: 如何支持模糊搜索A: 对division_name字段创建全文索引或使用Elasticsearch等搜索引擎进行复杂搜索。部署成果与后续扩展通过以上步骤你已经成功构建了一个完整的中国行政区划MySQL数据库系统。这个系统具备✅完整的数据覆盖从省级到村级的五级行政区划数据✅高效的查询性能通过合理的索引设计和表结构优化✅灵活的扩展能力单表设计便于维护和扩展✅生产环境就绪支持高并发访问和数据完整性保障基于这个数据库你可以进一步开发RESTful API服务为前端应用提供行政区划数据接口数据同步服务定期从官方源更新数据地理信息系统结合GIS数据提供地图展示功能数据分析平台基于行政区划进行多维数据统计现在你的应用拥有了一个稳定、可靠的中国行政区划数据基础可以专注于业务逻辑的开发而无需担心数据来源和管理的复杂性。【免费下载链接】Administrative-divisions-of-China中华人民共和国行政区划省级省份、 地级城市、 县级区县、 乡级乡镇街道、 村级村委会居委会 中国省市区镇村二级三级四级五级联动地址数据。项目地址: https://gitcode.com/gh_mirrors/ad/Administrative-divisions-of-China创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

如何将中国行政区划数据迁移到MySQL数据库?

如何将中国行政区划数据迁移到MySQL数据库? 【免费下载链接】Administrative-divisions-of-China 中华人民共和国行政区划:省级(省份)、 地级(城市)、 县级(区县)、 乡级&#xff08…...

Bright Data Web Scraping 实战:用 MCP + Dify 构建 Amazon 数据采集 AI 工作流

在 AI 应用进入“可执行任务”阶段后,很多团队都遇到同一个问题: 大模型很聪明,但如果拿不到稳定、结构化、可持续更新的数据,最终产出依然会停留在“聊天”层面。尤其在电商场景里,像 Amazon 这样的高价值站点&#x…...

MATLAB神经网络拟合工具箱实战:从数据导入到模型部署的完整指南

1. 数据准备与导入 用MATLAB做神经网络回归的第一步,就是把数据整理好塞进工作区。我见过太多新手在这第一步就栽跟头——要么数据格式不对,要么变量没对齐,结果后面步步出错。这里分享几个我踩过坑才总结出来的经验。 首先说数据格式。虽然工…...

飞书文档批量导出工具:企业知识库迁移的完整解决方案

飞书文档批量导出工具:企业知识库迁移的完整解决方案 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 在数字化转型的浪潮中,企业知识管理面临着平台迁移的挑战。当您的团队…...

G-Helper:华硕笔记本性能调优的轻量级革命,三步解锁硬件控制新境界

G-Helper:华硕笔记本性能调优的轻量级革命,三步解锁硬件控制新境界 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyru…...

AGI不是大模型升级版!SITS2026原型揭示3个反直觉设计(实时世界建模、非符号化目标生成、抗遗忘记忆压缩)

第一章:SITS2026案例:AGI原型系统展示 2026奇点智能技术大会(https://ml-summit.org) 系统架构概览 SITS2026 AGI原型系统采用分层认知架构,整合多模态感知、符号推理与具身学习模块。核心运行于异构硬件集群之上,支持实时跨模态…...

从零到一:深入剖析Transformer解码器的核心机制与实战应用

1. Transformer解码器基础:从编码器到解码器的跨越 第一次接触Transformer架构时,最让我困惑的就是解码器部分。和编码器相比,解码器多了两个关键设计:Masked Self-Attention和Cross-Attention。这两个机制让解码器能够完成序列生…...

《作业2》

...

终极免费PCB查看器:3分钟掌握OpenBoardView电路板分析技巧

终极免费PCB查看器:3分钟掌握OpenBoardView电路板分析技巧 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 还在为复杂的.brd文件头疼吗?面对密密麻麻的电路板元件不知所措&#xff…...

【tinyGTC】北斗授时授频 GPSDO 驯服钟的PPS和10M时钟测量

技术交流,产品咨询,项目开发,请添加文章下方微信号 目录驯服钟tinyGTC测试测试结果驯服钟 手上做了一个mini的驯服钟,使用刚入手的tinyGTC进行PPS信号和10MHz时钟信号的测量。 tinyGTC测试 针对驯服钟的PPS信号和10MHz时钟信号&…...

3分钟搞定B站缓存视频:m4s转MP4终极免费工具指南

3分钟搞定B站缓存视频:m4s转MP4终极免费工具指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了喜欢的视频&a…...

STM32F103驱动1.44寸TFT屏(ST7735R)避坑实录:从屏幕偏移到SPI配置详解

STM32F103驱动1.44寸TFT屏(ST7735R)实战指南:从硬件连接到显示优化 刚拿到一块1.44寸TFT屏准备接入STM32F103时,很多开发者会面临一个尴尬局面——网上的参考代码能点亮屏幕,但显示效果总有些"不对劲"。要么…...

5分钟极速部署:为Windows 11 LTSC系统解锁微软商店完整生态

5分钟极速部署:为Windows 11 LTSC系统解锁微软商店完整生态 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 当企业管理员面对Windows 11 L…...

Snipe-IT开源IT资产管理系统:从混乱到有序的企业级解决方案

Snipe-IT开源IT资产管理系统:从混乱到有序的企业级解决方案 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 在IT运维的日常工作中,你是否经常面临…...

别再只会点灯了!用CubeMX和HAL库玩转GPIO的5个实用小技巧(附代码)

从基础到进阶:CubeMX与HAL库GPIO开发的5个实战技巧 在嵌入式开发中,GPIO操作看似简单,但真正高效地使用它却需要一些技巧。很多开发者停留在最基本的点亮LED阶段,却不知道CubeMX和HAL库提供了更多强大的功能可以提升开发效率和代码…...

BaiduPCS-Go深度解析:命令行网盘管理实战指南

BaiduPCS-Go深度解析:命令行网盘管理实战指南 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 还在为百度网盘网页端操作繁琐而烦恼?…...

手把手教你用ZYNQ和AN108模块实现正弦波生成与采集(附完整Verilog代码)

基于ZYNQ的AD/DA信号闭环系统实战:从正弦波生成到采集验证 在嵌入式信号处理领域,FPGAARM架构的ZYNQ平台因其并行处理能力和灵活配置特性,成为实时信号系统开发的理想选择。本文将构建一个完整的信号闭环验证系统:通过ZYNQ FPGA生…...

Unity新手避坑指南:用C#脚本动态修改材质和Shader,别再搞混material和sharedMaterial了

Unity材质控制深度解析:从内存管理到动态效果实战 在Unity开发中,材质(Material)和着色器(Shader)的控制是创建动态视觉效果的核心技能。许多开发者在使用C#脚本修改材质属性时,常常陷入material和sharedMaterial的混淆陷阱,导致内…...

STM32驱动WS2812的另一种思路:SPI模拟时序对比PWM方案,哪个更适合你的项目?

STM32驱动WS2812的深度方案对比:SPI模拟与PWM实现的技术解析与选型指南 在嵌入式LED控制领域,WS2812系列智能灯珠因其集成驱动电路和单线通信特性,已成为项目开发中的热门选择。面对不同应用场景对刷新率、稳定性和资源占用的差异化需求&…...

手把手教你用Verilog和ModelSim搞定RISC-V单周期CPU的仿真验证(附完整测试代码)

手把手教你用Verilog和ModelSim搞定RISC-V单周期CPU的仿真验证(附完整测试代码) 在数字电路设计的学习过程中,RISC-V单周期处理器的实现是一个重要的里程碑。然而,仅仅完成Verilog代码编写还远远不够,如何验证处理器的…...

Wi-Fi 6和Wi-Fi 6E有啥区别?

Wi-Fi 技术正以前所未有的速度迭代。从早年的 10Mbps 时代,到如今千兆光纤普及,每一代 Wi-Fi 标准都带来显著性能跃升。Wi-Fi 6(802.11ax)已让 2.4GHz 和 5GHz 双频段实现高效并发,但随着智能家居设备爆炸式增长和 4K/8K 视频需求的激增,传统频段的拥堵问题日益突出。Wi-…...

Rockchip U-Boot启动避坑指南:详解那些影响多核启动的关键CONFIG标志(如SMPEN、SPIN_TABLE)

Rockchip U-Boot多核启动深度解析:关键CONFIG标志实战指南 当你在RK3588开发板上首次看到"CPU1: failed to come online"的启动错误时,可能不会想到这竟源于一个被忽略的CONFIG_ARMV8_SPIN_TABLE配置。作为Rockchip平台开发者,我们…...

【AGI发展时间线终极对照表】:对比OpenAI、Anthropic、中国智源研究院、欧盟AI Office四大路线图,识别3个被集体低估的瓶颈变量

第一章:AGI发展时间线预测与争议 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能(AGI)的时间线预测始终处于高度分歧之中,不同研究机构、AI实验室与思想领袖基于模型缩放律、神经科学进展、计算基础设施演进及认知架…...

AI编程革命:Codex自动化脚本实战指南

技术文章大纲:告别重复造轮子——Codex写脚本的高效实践核心主题通过OpenAI Codex等AI编程工具自动化生成脚本,减少重复开发工作,提升效率。理解Codex的能力与限制Codex是基于GPT-3的代码生成模型,擅长根据自然语言描述生成Python…...

抖音批量下载终极指南:如何实现500+视频/小时的高效无水印采集

抖音批量下载终极指南:如何实现500视频/小时的高效无水印采集 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

告别裸机思维:用STM32CubeMX和HAL库快速搭建串口调试打印框架(Keil5工程)

STM32CubeMX与HAL库实战:构建高效串口调试框架 在嵌入式开发中,串口调试是最基础却至关重要的技能。想象一下,当你的代码在目标板上运行时,如何快速定位问题?如何验证变量值是否符合预期?一个可靠的串口打…...

3分钟搞定Windows右键菜单:ContextMenuManager终极清理指南

3分钟搞定Windows右键菜单:ContextMenuManager终极清理指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是不是也遇到过这种情况?右…...

跨平台音频下载解决方案:基于Go+Qt5混合架构的技术实现深度解析

跨平台音频下载解决方案:基于GoQt5混合架构的技术实现深度解析 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 在数字内…...

Android Studio中文界面配置终极实战方案:3步告别英文开发困境

Android Studio中文界面配置终极实战方案:3步告别英文开发困境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为…...

AGI学派认知鸿沟正在扩大:3类不可调和的根本分歧(本体论/学习机制/验证标准),92%的研究者尚未意识到其后果

第一章:AGI学派认知鸿沟正在扩大:3类不可调和的根本分歧(本体论/学习机制/验证标准),92%的研究者尚未意识到其后果 2026奇点智能技术大会(https://ml-summit.org) 当前AGI研究正经历一场静默的范式撕裂:三…...