博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将行政区域导入SQL SERVER
阅读量:6965 次
发布时间:2019-06-27

本文共 1311 字,大约阅读时间需要 4 分钟。

步骤如下:

一、到国家统计局网站,找到县及县以上行政区划页面。

我找到的是这个:

然后将页面上的代码直接复制粘贴到记事本,保存为 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) 
code        char(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是广州。

 

--设置市级地名的父IDUPDATE [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';		--设置县级地名的父IDUPDATE [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';

大功告成,可惜没有双儿。

 

 

 

 

 

 

你可能感兴趣的文章
企业应用平台移动化发展趋势
查看>>
微服务系列(七):将单体应用改造为微服务
查看>>
redis集群部署步骤
查看>>
Centos 配置
查看>>
eclipse svn提交忽略文件及文件夹,ignore设置无效..
查看>>
Supervisor重新加载配置启动新的进程
查看>>
promise
查看>>
es6学习1: 模拟react Comopnent类的实现
查看>>
js继承问题
查看>>
201621123069 《Java程序设计》第十一周学习总结
查看>>
配置telnet和SSH
查看>>
教师课堂教学必备的100个妙招,总有一个适合你!
查看>>
C# 设计开发模式 -观察者模式
查看>>
Java进阶篇(一)——接口、继承与多态
查看>>
lcd驱动框架
查看>>
EF Code First执行SQL语句及存储过程
查看>>
linux c 链接详解4-共享库
查看>>
Docker学习笔记_安装ActiveMQ
查看>>
MacOS下打包Python应用
查看>>
冲刺阶段第七天
查看>>