将行政区域导入SQL SERVER
步骤如下:
一、到国家统计局网站,找到县及县以上行政区划页面。
我找到的是这个: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)
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是广州。
--设置市级地名的父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';
大功告成,可惜没有双儿。
将行政区域导入SQL SERVER的更多相关文章
- 实战手记:让百万级数据瞬间导入SQL Server
想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...
- 【转 】实战手记:让百万级数据瞬间导入SQL Server
想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...
- BULK INSERT如何将大量数据高效地导入SQL Server
转载自:http://database.51cto.com/art/201108/282631.htm BULK INSERT如何将大量数据高效地导入SQL Server 本文我们详细介绍了BULK ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- Excel表数据导入Sql Server数据库中
Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...
- 把Excel导入SQL server时出现错误
在把Excel导入SQL server时出现“未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 ”该 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12 ...
- excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理
excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...
- 详解如何挑战4秒内百万级数据导入SQL Server(转)
对于大数据量的导入,是DBA们经常会碰到的问题,在这里我们讨论的是SQL Server环境下百万级数据量的导入,希望对大家有所帮助.51CTO编辑向您推荐<SQL Server入门到精通&g ...
- Excel文件导入SQL Server数据库
Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...
随机推荐
- Visual Studio2013创建、公布监控Windows Azure网站
原文 Visual Studio2013创建.公布监控Windows Azure网站 随着Visual Studio 2013的发布,现在我们可以在Visual Studio内部实现Windows A ...
- Winfrom设置DataGridView单元格获得焦点(DataGridView - CurrentCell)
设置DataGridView单元格获得焦点 this.dgv_prescription.BeginEdit(true);
- 嵌入式ntp服务器的移植
一.交叉编译 1.官网下载http://www.ntp.org/点击download选项页 我的版本是ntp-4.2.6p5.tar.gz 2.解压 tar -zxvf ntp-4.2.6p5.tar ...
- lucene做简单的文件索引
package com.mylucene; import java.io.File; import java.io.FileReader; import java.io.IOException; im ...
- ORA-00942:表或视图不存在(低级错误)
在好多时候.调试PL/SQL对象时会报.ORA-00942 看看错误原因吧: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFjc29uX2JhaQ== ...
- ADOConnection数据库连接池
unit AdoconnectPool; interface uses Classes, Windows, SysUtils, ADODB, IniFiles, forms; type TADOCon ...
- 修改XPMenu让ToolButton在Down=True时正确显示
XPMenu是一个不错的程序界面效果控件,但它也存在不少不足之处.我最近又对它作了一点修改. 原因是我在程序里有一个ToolButton,其Style=tbsButton,当Down=True时,XP ...
- 最近遇到VS2013,在打开解决方案时,报如下错误: 未找到与约束
最近遇到VS2013,在打开解决方案时,报如下错误: “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolution ...
- 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器
14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器 这个章节描述技术关于移动或者copy ...
- 【菜鸟看框架】——EF怎样自己主动生成实体
引言 在上一篇博客中给大家介绍了一些关于EF框架的基本知识.让大家对实体架构算是有了一个入门的认识,当然知识 这一篇博客是不能非常清楚的理解实体架构的内涵的.我们须要在实践中自己去不断的研究和探索当中 ...