中华人民共和国行政区划代码:
国家基础地理信息系统地形数据库境界和居民地要素执行国家标准《中华人民共和国行政区划代码》(GB
2260-1995),并根据需要扩充了部分代码。代码的结构如下:
全国省级行政区划代码一览表:
代码省(自治区、直辖市)
110000北京市
120000天津市
130000河北省
140000山西省
150000内蒙古自治区
210000辽宁省
220000吉林省
230000黑龙江省
310000上海市
320000江苏省
330000浙江省
340000安徽省
350000福建省
360000江西省
370000山东省
410000河南省
420000湖北省
430000湖南省
440000广东省
450000广西壮族自治区
460000海南省
500000重庆市
510000四川省
520000贵州省
530000云南省
540000西藏自治区
610000陕西省
620000甘肃省
630000青海省
640000宁夏回族自治区
650000新疆维吾尔自治区
710000台湾省
810000香港特别行政区
910000澳门特别行政区(国家基础地理信息系统扩充代码)
一、到国家统计局网站,找到县及县以上行政区划页面。我找到的是这个:http://www.stats.gov.cn/tjbz/xzqhdm/t20130118_402867249.htm
然后将页面上的代码直接复制粘贴到记事本,保存为 e:\temp\region.txt。
二、硬着头皮用SQL SERVER Management Studio导进去。
导入的时候注意一点,就是要在目标表里设置一个标识列。
三、生成区域表
在这里导进去的目标表,只是一个临时用的中间表:region_tmp,我真正要的,是表region。
中间表region_tmp的结构:
region_tmp
======================
id int identity(1,1)
cn varchar(50)
导进去以后,数据如下:
而我想要的区域表region
region
=========================
id int identity(1,1)
codechar(6)
name nvarchar(50)
parentId int
所以现在需要将数据再从region_tmp ==>region。
在导入的时候,之所以要设置一个标识列,就是用来区分邮政编码和地名。在region_tmp,奇数行都是编码,偶数行则是地名,因此可以通过以下语句将编码和地名都写进region的同一行:
INSERT INTO [dbo].[Region]
([code]
,[name]
,[parentId])
SELECT a.cn,b.cn,0
FROM region_tmp a,region_tmp b
WHERE b.id=a.id+1
and (a.id % 2) = 1
四、修改区域表
现在要修改字段region.parentId。就是每个地名记录要有一个父ID,在使用的时候好排序。比如广州的父ID是广东省,天河区的父ID是广州。
--设置市级地名的父ID
UPDATE [dbo].[region]
SET parentid=b.id
FROM [region],[region] b
WHERE LEFT([region].code,2)=LEFT(b.code,2)
AND RIGHT([region].code,4)<>'0000' AND RIGHT([region].code,2)='00'
AND RIGHT(b.code,4)='0000'
--设置县级地名的父ID
UPDATE [dbo].[region]
SET parentid=b.id
FROM [region],[region] b
WHERE LEFT([region].code,4)=LEFT(b.code,4)
AND RIGHT([region].code,2)!='00'
AND RIGHT(b.code,2)='00'
update 行政区划 set 户数=A.户数,人数=A.人数 FROM(select left(国际编码,9) AS 国际编码 ,
户数=sum(户数),人数=sum(人数)
from 行政区划 WHERE len(国际编码)=12 and left(国际编码,9)='370983002'
GROUP BY left(国际编码,9)) A WHERE A.国际编码=行政区划.国际编码 AND 行政区划.国际编码='370983002'
--这样才对 这样的话只扫描了一次表,统计了两个东西,不过你的国际编码要是有索引的话,应该要好点
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)