linyongqin



sql数据下载:http://download.csdn.net/download/linyongqin/10224874

获取省、市、区
网址:http://www.mca.gov.cn/article/sj/tjbz/a/2017/

获取省、市、区、街道、村
网址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/

统计用区划代码和城乡划分代码编制规则

 

--北京、天津、上海、重庆
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES (\'110100\',\'市辖区\',2,\'city\');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES (\'120100\',\'市辖区\',2,\'city\');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES (\'310100\',\'市辖区\',2,\'city\');
INSERT INTO dmb_city (CityCode,CityName,CityLevel,CityRemark) VALUES (\'500100\',\'市辖区\',2,\'city\');

 -- 省 province
 -- 市 city
 -- 区 area
 -- 街道 town
select * from dmb_city where CityCode like \'%00\' and CityLevel<>1 
--
update dmb_city set CityLevel=1,CityRemark=\'province\' where  where CityCode like \'%0000\'
update dmb_city set CityLevel=2,CityRemark=\'city\' where  where CityCode like \'%00\'
update dmb_city set CityLevel=3,CityRemark=\'area\' where  where CityLevel not in (1,2)

--110000
--130200
select * from dmb_city where CityLevel=3 or CityLevel=1
--更新父级代码
update dmb_city set ParentCode=substring(CityCode,1,2)+\'0000\'  where  CityLevel=2
update dmb_city set ParentCode=substring(CityCode,1,4)+\'00\'  where  CityLevel=3
update dmb_city set ParentCode=substring(CityCode,1,6)  where  CityLevel=4

update dmb_city set CityName=substring(CityName,1,len(CityName)-1) where CityName like \'%街道办\'

 

 

#region 根据区获取街道信息

WebClient wc = new WebClient();

Stopwatch sw = new Stopwatch();
sw.Start();

Response.Write("<p>-------------------- 获取数据 begin --------------------</p>");

long index = 0;
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO dmb_city (CityCode,CityName) VALUES ");
DataTable dt = SqlHelper.ExecuteDataset(SqlHelper.connectionString, CommandType.Text, "select * from dmb_city where CityLevel=3").Tables[0];
foreach (DataRow dr in dt.Rows)
{
    //Response.Write("<p>" + dr["CityCode"] + "-" + dr["CityName"]+"</p>");

    try
    {
        //http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/44/05/440511.html
        //拼接网址
        string url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/" + dr["CityCode"].ToString().Substring(0, 2) + "/" + dr["CityCode"].ToString().Substring(2, 2) + "/" + dr["CityCode"].ToString() + ".html";
        string html = wc.DownloadString(url);
        MatchCollection mc = Regex.Matches(html, "<tr\\sclass=\'towntr\'><td><a\\shref=\'.+?\'>(.+?)</a></td><td><a\\shref=\'.+?\'>(.+?)</a></td></tr>");
        int i = 0;
        //遍历匹配的内容
        foreach (Match item in mc)
        {
            if (item.Success)
            {
                //Response.Write(item.Groups[1].Value);

                //拼接SQL 过滤无效字符
                sb.Append("(\'" + item.Groups[1].Value.Substring(0, 9) + "\',\'" + item.Groups[2].Value.Replace("办事处", "").Replace("街道办", "街道") + "\')");

                index++;
                if (index > 900)
                {
                    sb.Append(";");

                    index = 1;
                    sb.Append("INSERT INTO dmb_city (CityCode,CityName) VALUES ");
                }
                else
                {
                    sb.Append(",");
                }
            }
        }
    }
    catch
    {
        //获取不到网络链接直接跳过
        continue;
    }

}
Response.Write("<p>" + sb.ToString().TrimEnd(\',\') + ";</p>");

Response.Write("<p>-------------------- 获取数据 end --------------------</p>");
sw.Stop();
Response.Write("<p>-------------------- 共用 " + sw.ElapsedMilliseconds + "毫秒 --------------------</p>");

#endregion

 

分类:

技术点:

相关文章: