步驟如下:
一、到國家統計局網站,找到縣及縣以上行政區劃頁面。
我找到的是這個: 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';
大功告成,可惜沒有雙兒。
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
