`
wx1569582009
  • 浏览: 124544 次
文章分类
社区版块
存档分类
最新评论

制作一套适用于Oracle数据库的县及县以上行政区划数据

 
阅读更多

因为项目中要用到最新版的中国行政区划数据,我总结了如下方法归集数据,仅供参考。

之前已经写过一篇博客《总结几个有关国家行政区划的问题》(https://my.oschina.net/Tsybius2014/blog/757009),对一些与行政区划有关的问题进行了初步的梳理,本文要实现的目标是:获取国家行政区划数据并将之导入到Oracle数据中。

首先获取的数据一定要从权威渠道获取,网上找来的很多数据都是几年前的数据,而国家的行政区划每年都有变化。经过对历年县级及以上行政区划的变化进行分析,虽然变更的实际情况多种多样,但任何种类变化都可用以下三类原子变化表示 :区域新设、区域撤销、区域更名。

国家行政区划数据可从国家统计局官网获取,地址为:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/

本文选取发布时间最近的版本,该版本于2016年8月9日发布,区划数据为2015年9月30日的全国县级及以上行政区划数据。

将这些数据复制到文本文件area_data.txt中,用文本编辑工具editplus打开:

有一点需要注意,历年数据虽然在网页上看起来格式是一样的,但从实际粘贴效果来看,不同年的数据对空行、空格字符(全角空格、半角空格、制表符)等字符的使用可能有所不同,因此每次操作都需要具体问题具体分析。

本次处理,我们需要进行如下替换:将制表符和全角空格字符都替换为半角空格

将这些数据粘贴到Excel文档area_data.xlsx中,我使用的Office版本为Office2010:

下一步是要删除数据表中的偶数行,方法是在最左侧新加一列A ,并将A列的公式设定为“=MOD(ROW(),2)”

然后设置过滤器,点击“工具→筛选”,将A列为0的数据都过滤出来,然后一并删掉。事毕之后将用于筛选的A列删除。

再给自己定一个小目标,现在的A列显示的内容为“110000      北京市”,我们要将它放到两列中。

选中A列,找到“数据→分列”。

向导一共分三步,第一步按默认选中分割符号。

第二步,除了Tab键外,还应勾选空格。

第三步,一定要选择“文本”,否则后续执行含VLOOKUP的公式时会出现错误,还需要重新做文本分列。

分列后的数据如下,注意A列左上角会出现绿色的小三角。

后面需要使用四个公式,将C、D、E、F四列分别计算为省、市、县、省.市.县

以下公式都供第一行使用,需要通过拉动单元格右下角扩展到后续行:

1、计算省,使用公式:=VLOOKUP(LEFT(A1,2)&"0000",$A$1:$B$3514,2,FALSE)

2、计算市,使用公式:=IF(RIGHT(A1,4)="0000","",VLOOKUP(LEFT(A1,4)&"00",$A$1:$B$3514,2,FALSE))

3、计算县,使用公式:=IF(RIGHT(A1,2)="00","",VLOOKUP(A1,$A$1:$B$3514,2,FALSE))

4、计算省.市.县,使用公式:=CONCATENATE(C1,IF(D1="","","."&D1),IF(E1="","","."&E1))

现在我们需要将A列与F列的对应关系导入到Oracle数据库中的一张表里,假定我们要将数据导入到表AREA_INFO_NEW中,此表结构如下:

CREATE TABLE AREA_INFO_NEW
(
    AREA_CODE VARCHAR(20),
    AREA_NAME VARCHAR(100)
);

在最上方添加一行,A列地区码填写AREA_CODE,F列地区名称填写AREA_NAME,注意如果表格最后有冗余的空行,要予以删除,否则此行也会被导入到数据库中。

我使用的Oracle版本为Oracle11g,plsql客户端版本为7.0.1.1066。

用户/系统DSN选择“ExcelFiles”,用户名和密码输入Oracle用户登录名和密码即可。

点击连接后,找到要导入的Excel表。

在“来自ODBC的数据”选项卡下,设置“导入表”并指定表为Sheet1,即我们刚才操作Excel时使用的Sheet页。

在“到Oracle的数据”选项卡下,设置所有者、表名,并选择字段的对应关系,同名字段可建立默认的关联关系(AREA_CODE和AREA_NAME)。

点击最下方的“导入”按钮开始导入。

导入完毕后,plsql会告知导入的记录数和导入总时长。

此时可验证行政区划数据已被尽数导入到数据库中。

最后再列出三个SQL语句,当两张表有不同的行政区划数据时,可用于做数据对比。(如行政区划新旧数据的替换,有时就需要研究清楚数据的增减变化)

设老数据保存在表AREA_INFO_OLD中,该表结构与AREA_INFO_NEW一致。

1、查询新设的行政区划

SELECT NEW.AREA_CODE, NEW.AREA_NAME
FROM   AREA_INFO_NEW NEW
WHERE  NEW.AREA_CODE NOT IN (SELECT OLD.AREA_CODE
                             FROM   AREA_INFO_OLD OLD
                             WHERE  OLD.AREA_CODE = NEW.AREA_CODE)
ORDER  BY NEW.AREA_CODE;

2、查询撤销的行政区划

SELECT OLD.AREA_CODE, OLD.AREA_NAME
FROM   AREA_INFO_OLD OLD
WHERE  OLD.AREA_CODE NOT IN (SELECT NEW.AREA_CODE
                             FROM   AREA_INFO_NEW NEW
                             WHERE  OLD.AREA_CODE = NEW.AREA_CODE)
ORDER  BY OLD.AREA_CODE;

3、查询更名的行政区划

SELECT OLD.AREA_CODE, OLD.AREA_NAME AS OLD_NAME, NEW.AREA_NAME AS NEW_NAME
FROM   AREA_INFO_OLD OLD, AREA_INFO_NEW NEW
WHERE  OLD.AREA_CODE = NEW.AREA_CODE AND
       OLD.AREA_NAME <> NEW.AREA_NAME
ORDER  BY OLD.AREA_CODE;

END

转载于:https://my.oschina.net/Tsybius2014/blog/777568

分享到:
评论

相关推荐

    全国行政区划代码(县及以上)更新与2021-10-15

    - SQL文件(2021-10全国行政区划代码.sql)可能包含创建表结构、插入数据或更新现有数据的SQL语句,可以使用MySQL、Oracle、SQL Server等数据库管理系统执行。 2. **数据库设计**: - 在数据库中,通常会有一个...

    12位行政区划_精确到村委会(xlsx+txt).rar

    总的来说,这个压缩包提供了一套详尽的中国行政区划数据,对于那些需要处理与地理位置密切相关的IT项目,如地理信息系统的开发、人口普查分析、公共服务优化或者商业决策支持系统,都是非常有价值的资源。...

    全国省市县的数据库

    全国省市县数据库是一个重要的资源,通常用于地理信息系统(GIS)、数据分析、统计建模以及与地域相关的应用程序开发。这个压缩包包含多个文件,每个文件都提供了中国不同行政级别的详细信息。 首先,`全国省市县...

    省市区县镇村街道5级行政区划地址库 解压后70M sql文件

    文件名为"citys.sql",这可能意味着数据集主要侧重于城市的行政区划信息,包括了省、市、区县以及更下一级的城镇和街道。在实际使用中,开发人员可以将此数据导入数据库,通过SQL查询来获取特定地区的数据,或者结合...

    全国省市区县数据库脚本及XML

    全国省市区县数据库脚本及XML是一套完整的数据资源,包含我国所有省份、城市、区县的详细地理信息,以数据库脚本和XML格式提供,适用于多种数据库系统,如MySql、Oracle、sqlite和sql server。这些数据对于开发地理...

    2020省市区2019省市区街道4级MySQL数据.zip

    这个数据库文件可能是由一系列表格构成,每个表格对应一个行政级别,例如:省、市、区县、街道,可能包含字段如行政代码、区域名称、上级行政区划代码等。 在实际应用中,这样的数据集可能用于地理信息系统(GIS)...

    全国省市区县数据(2011)

    对于研究人员、政策制定者或数据分析爱好者来说,这是一个宝贵的资源,可以深入了解我国的行政区划和2011年的相关数据。 总之,“全国省市区县数据(2011)”提供了一套全面的中国行政区域数据,涵盖了从省级到县级...

    国土资源基础数据标准模板库开发设计与应用

    为了实现国土资源基础数据的有效管理和利用,提升国土资源管理信息化水平,有必要开发一套适用于江苏省国土资源管理的数据标准模板库。该模板库旨在提供统一的数据标准和技术解决方案,确保数据的一致性和互操作性。...

    全国1-25万地形数据库说明(2012PDF版)

    - **数据适用范围**:适用于科学研究、国土规划、环境保护等领域。 - **数据密级**:属于国家秘密,具体级别需根据实际情况确定。 - **数据生产与维护单位**:由相关部门负责生产与维护。 #### 五、数据字典与编码 ...

    java毕设课设-jsp+sql城乡信息管理软件源代码+论文文档资料.zip

    4. 数据库设计:项目可能包含了如用户管理、城乡信息表、行政区划表等多个数据库表的设计,以满足信息分类和检索的需求。数据库设计应遵循正常化原则,提高数据一致性,减少数据冗余。 5. 前后端分离:尽管描述中...

    长江中下游河道三维交互式可视化系统

    - **二维数据管理与编辑:** 支持对河流、水系、道路、行政区划、居民点等基础地理信息的管理与编辑。 - **三维场景交互:** 用户可以在二维和三维窗口中查询地物属性,实现二三维联动。 - **数据库结构:** 包括...

    瑞士州

    【描述】:“瑞士州”的描述虽然简洁,但我们可以推测它可能是一个与瑞士地理信息、行政区划或者文化相关的项目,而这个项目是用Java来实现的。在Java中,开发者可以利用丰富的库和框架来构建复杂的数据处理和可视化...

Global site tag (gtag.js) - Google Analytics