区划代码和城乡划分代码的数据

访问地址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/index.html

前段时间写了一个程序,用来下载区划代码和城乡划分代码的数据,包含省、地级市、区县、镇街道、村社区的信息,是txt格式数据文件,下面是百度网盘的下载地址

链接:https://pan.baidu.com/s/1Aj5aEzwQ49owRLBcNV_vYg?pwd=pgjm

提取码:pgjm

下载解压后的文件

数据下载后如何将txt文件导入数据库,接下来以SqlServer数据库为例,一步步将txt文件数据导入数据库中

一、创建数据库

二、创建数据表,需要建5个表,建表语句如下

  1. 创建省份表

--省 直辖市
IF EXISTS(SELECT * FROM sys.objects WHERE name = 't_province')
BEGIN
    DROP TABLE t_province
END
CREATE TABLE t_province
(
    province_code int primary key,        --链接代码,下载数据时用
    province_name varchar(20),            --名称
    link_name varchar(20)                --链接地址,下载数据时用
);
  1. 创建城市表

--地级市
IF EXISTS(SELECT * FROM sys.objects WHERE name = 't_city')
BEGIN
    DROP TABLE t_city
END
CREATE TABLE t_city
(
    province_code int,                --链接代码,与省份关联
    city_code bigint primary key,    --市区划代码
    city_name varchar(40),            --名称
    link_name varchar(20),            --链接地址,下载数据时用
    link_prefix varchar(20),        --链接前缀,下载数据时用
    row_idx int                        --父级行序号,下载数据时用
);
  1. 创建县级表

--区 县 县级市
IF EXISTS(SELECT * FROM sys.objects WHERE name = 't_county')
BEGIN
    DROP TABLE t_county
END
CREATE TABLE t_county
(
    city_code bigint,
    county_code bigint primary key,
    county_name varchar(40),
    link_name varchar(20),
    link_prefix varchar(20),
    row_idx int
);
  1. 创建城镇表

--镇 街道
IF EXISTS(SELECT * FROM sys.objects WHERE name = 't_town')
BEGIN
    DROP TABLE t_town
END
CREATE TABLE t_town
(
    county_code bigint,
    town_code bigint primary key,
    town_name varchar(60),
    link_name varchar(30),
    link_prefix varchar(20),
    row_idx int
);
  1. 创建乡村表

--乡村 社区
IF EXISTS(SELECT * FROM sys.objects WHERE name = 't_village')
BEGIN
    DROP TABLE t_village
END
CREATE TABLE t_village
(
    town_code bigint,                    --城镇区划代码
    village_code bigint primary key,    --乡村区划代码
    village_classify_code varchar(3),    --城乡分类代码
    village_name varchar(60),            --名称
    link_name varchar(20)
);

三、将txt数据导入数据表中,使用的是Navicat工具连接的SqlServer。依次导入province.txt、city.txt、county.txt、town.txt、village1.txt、village2.txt、village3.txt、village4.txt、village5.txt,下面只演示了province.txt的导入步骤,其它文件的导入步骤都是一样的,只是第3步选择的txt文件不一样和第6步目标表需要手动选择下,其它文件就不展示了。

  1. 选中左侧的“表”,点击“导入向导”

  1. 选择“文本文件”,点击“下一步”

  1. 选择导入的txt文件,下面导入的是省份的txt文件

  1. 选择“逗号”,点击“下一步”

  1. 点击“下一步”

  1. 目标表如果不正确需要手动选择下,点击“下一步”

  1. 点击“下一步”

  1. 导入模式默认追加,点击“下一步”

  1. 点击“开始”

  1. 导入完成,点击“关闭”

  1. 重复以上步骤完成其它txt文件的导入

需要注意的第6步,目标表选择自己建的表t_city

错误的

正确的

四、在数据库查询数据

单表查询

SELECT * FROM t_province;

SELECT * FROM t_city;

SELECT * FROM t_county;

SELECT * FROM t_town;

SELECT * FROM t_village;

联表查询

--查询 湖北省的地级市
SELECT p.province_name,c.city_code,c.city_name 
FROM t_province p INNER JOIN t_city c ON p.province_code = c.province_code
WHERE p.province_name = '湖北省'

--查询 湖北省的区县、县级市
SELECT p.province_name,c.city_code,c.city_name ,c2.county_code,c2.county_name
FROM t_province p 
INNER JOIN t_city c ON p.province_code = c.province_code
INNER JOIN t_county c2 ON c.city_code = c2.city_code
WHERE p.province_name = '湖北省'
AND c.city_name = '武汉市'

--查询 湖北省武汉市的城镇、街道
SELECT p.province_name,c.city_code,c.city_name ,c2.county_code,c2.county_name,t.town_code,t.town_name
FROM t_province p 
INNER JOIN t_city c ON p.province_code = c.province_code
INNER JOIN t_county c2 ON c.city_code = c2.city_code
INNER JOIN t_town t on c2.county_code = t.county_code
WHERE p.province_name = '湖北省'
AND c.city_name = '武汉市'

--查询 湖北省武汉市的乡村、社区
SELECT p.province_name,c.city_code,c.city_name ,c2.county_code,c2.county_name,t.town_code,t.town_name,v.village_code,v.village_classify_code,v.village_name
FROM t_province p 
INNER JOIN t_city c ON p.province_code = c.province_code
INNER JOIN t_county c2 ON c.city_code = c2.city_code
INNER JOIN t_town t on c2.county_code = t.county_code
INNER JOIN t_village v on t.town_code = v.town_code
WHERE p.province_name = '湖北省'
AND c.city_name = '武汉市'
ORDER BY t.town_code

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐