Malvin's Blog

无志者千难万难,有志者千方百计

0%

中国省市区 最新版 数据库 SQL文件 截止 201504

根据 国家统计局 来制作的最新中国省市区数据库 原始数据不包含 所属关系 ,即数据库中没有 PID 相互的关联。 以下是原始数据(没有PID): region-origin-no-pid.sql     再提供一个经由我从省份的编号计算出来的,含所属关系(PID)的数据库,算法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//查找省
$province = DB::select("select * from region WHERE `code` LIKE '%0000'");

foreach ($province as $key=>$val) {

//省的识别码,如广东省,为 44 开头
$provinceCode = substr($val->code,0,2);
$areaInProvinces = DB::select("select * from region WHERE `code` LIKE '{$provinceCode}%' AND `code` NOT LIKE '%0000' ");

//如果省份内包含市/区
if ($areaInProvinces) foreach ($areaInProvinces as $areaInProvinceKey => $areaInProvince) {
//后3位为 0
if ( substr($areaInProvince->code,-3) == '000' ) {
//先更新所属
DB::update("update region set pid = '".$val->id."' where id = '".$areaInProvince->id."'");

$code = substr($areaInProvince->code,0,3);
DB::update("update region set pid = '{$areaInProvince->id}' WHERE `code` LIKE '{$code}%' AND `code` NOT LIKE '%000' ");
continue;
}

//后2位为 0
if ( substr($areaInProvince->code,-2) == '00' ) {
//先更新所属
DB::update("update region set pid = '".$val->id."' where id = '".$areaInProvince->id."'");

$code = substr($areaInProvince->code,0,4);
DB::update("update region set pid = '{$areaInProvince->id}' WHERE `code` LIKE '{$code}%' AND `code` NOT LIKE '%00' ");
continue;
}

}
}

  下载: region201504.sql