首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

最新全國省市縣行政區劃數據庫下載與導入指南

     編輯:MySQL 綜合教學

最新全國省市縣行政區劃數據庫下載與導入指南

提供最新全國三級行政區劃數據(省、市、縣/區),標準化表結構,可直接導入MySQL、PostgreSQL、SQL Server等主流數據庫,支撐地址選擇、物流計費、數據分析等業務場景。

一、數據來源與更新時間

  • 權威來源:國家統計局 2015年行政區劃代碼
  • 包含34個省級單位、333個地級市、2856個縣級區劃(數據以官方發布為準)

二、表結構設計

CREATE TABLE `region` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '唯一主鍵ID',
  `code` VARCHAR(12) NOT NULL COMMENT '行政區劃代碼(國標6-12位)',
  `name` VARCHAR(60) NOT NULL COMMENT '區劃名稱',
  `parent_id` INT UNSIGNED DEFAULT NULL COMMENT '父級ID(省->市->縣)',
  `first_letter` CHAR(1) DEFAULT NULL COMMENT '拼音首字母(索引優化)',
  `level` TINYINT UNSIGNED NOT NULL COMMENT '層級: 0=省, 1=市, 2=縣/區',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_code` (`code`),
  KEY `idx_parent` (`parent_id`),
  KEY `idx_level` (`level`),
  KEY `idx_letter` (`first_letter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='行政區劃表';

三、字段說明與示例數據

字段示例(北京市朝陽區)說明
id1001自增主鍵
code110105國標代碼:11(北京) 01(市轄區) 05(朝陽區)
name朝陽區標準名稱
parent_id1000指向北京市(id=1000)
first_letterCChaoyang 首字母,支持按字母檢索
level2縣級

四、數據導入方法

1. MySQL 命令行導入

# 解壓下載的SQL文件
gunzip region.sql.gz

# 登錄數據庫導入
mysql -u root -p -D your_database < region.sql

2. 圖形化工具導入

  • Navicat / DataGrip / DBeaver:右鍵數據庫 → 運行SQL文件 / 導入向導
  • phpMyAdmin:導入標籤頁 → 選擇文件 → 執行

3. 程式化導入

// Python 示例
import pymysql, csv
conn = pymysql.connect(host='localhost', user='root', password='xxx', db='your_db', charset='utf8mb4')
with open('region.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    sql = "INSERT INTO region (code, name, parent_id, first_letter, level) VALUES (%s, %s, %s, %s, %s)"
    with conn.cursor() as cursor:
        for row in reader:
            cursor.execute(sql, (row['code'], row['name'], row['parent_id'], row['first_letter'], row['level']))
    conn.commit()

五、常用查詢場景

-- 1. 獲取所有省份
SELECT * FROM region WHERE level = 0 ORDER BY first_letter;

-- 2. 獲取某省下所有城市 (如廣東省 code=44)
SELECT * FROM region WHERE parent_id = (SELECT id FROM region WHERE code = '44' AND level = 0);

-- 3. 獲取某市下所有區縣 (如深圳市 id=123)
SELECT * FROM region WHERE parent_id = 123 AND level = 2;

-- 4. 三級聯動數據構建 (遞歸CTE MySQL 8.0+)
WITH RECURSIVE region_tree AS (
    SELECT id, code, name, parent_id, level, 1 AS depth, CAST(name AS CHAR(200)) AS path
    FROM region WHERE level = 0
    UNION ALL
    SELECT r.id, r.code, r.name, r.parent_id, r.level, rt.depth + 1, CONCAT(rt.path, ' > ', r.name)
    FROM region r JOIN region_tree rt ON r.parent_id = rt.id
)
SELECT * FROM region_tree ORDER BY path;

六、下載地址

百度網盤:https://pan.baidu.com/s/1pK5FqMv (提取碼見分享頁)

文件包含:region.sql(建表+數據)、region.csv(純數據)、README.md。

七、維護建議

  1. 每年關注統計局發布的新版區劃代碼(通常民政部門調整後發布)
  2. 變更時採用「新增新代碼、舊代碼標記廢棄」策略,保留歷史數據關聯
  3. 大型應用建議接入高德/騰訊地圖API實時同步,數據庫作為離線備份
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved