步驟如下:
一、到國(guó)家統(tǒng)計(jì)局網(wǎng)站,找到縣及縣以上行政區(qū)劃頁(yè)面。
我找到的是這個(gè): http://www.stats.gov.cn/tjbz/xzqhdm/t20130118_402867249.htm
然后將頁(yè)面上的代碼直接復(fù)制粘貼到記事本,保存為 e:\temp\region.txt。
(注意復(fù)制時(shí),可能是受內(nèi)存限制,不一定能一次性復(fù)制完全所有內(nèi)容,注意確認(rèn)一下。)
復(fù)制粘貼的結(jié)果,讓我傻眼了:
居然是郵政編碼與名稱各自一行的。手動(dòng)改成一行?寫個(gè)程序來(lái)糾正?蚊子都睡了。
?
二、硬著頭皮用SQL SERVER Management Studio導(dǎo)進(jìn)去。
導(dǎo)入的時(shí)候注意一點(diǎn),就是要在目標(biāo)表里設(shè)置一個(gè)標(biāo)識(shí)列。如圖:
?
三、生成區(qū)域表
在這里導(dǎo)進(jìn)去的目標(biāo)表,只是一個(gè)臨時(shí)用的中間表:region_tmp,我真正要的,是表region。
中間表region_tmp的結(jié)構(gòu):
region_tmp
======================
id ? ? ? ? ? int ?identity(1,1)
cn ? ? ? ? ?varchar(50)
導(dǎo)進(jìn)去以后,數(shù)據(jù)如下:
?
而我想要的區(qū)域表region
region
=========================
id ? ? ? ? ? ? ?int identity(1,1)?
code ? ? ? ?char(6)
name ? ? ? nvarchar(50)
parentId ? int
?
所以現(xiàn)在需要將數(shù)據(jù)再?gòu)膔egion_tmp ==> region。
在導(dǎo)入的時(shí)候,之所以要設(shè)置一個(gè)標(biāo)識(shí)列,就是用來(lái)區(qū)分郵政編碼和地名。在region_tmp,奇數(shù)行都是編碼,偶數(shù)行則是地名,因此可以通過以下語(yǔ)句將編碼和地名都寫進(jìn)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
四、修改區(qū)域表
?
現(xiàn)在要修改字段region.parentId。就是每個(gè)地名記錄要有一個(gè)父ID,在使用的時(shí)候好排序。比如廣州的父ID是廣東省,天河區(qū)的父ID是廣州。
?
--設(shè)置市級(jí)地名的父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'; --設(shè)置縣級(jí)地名的父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';
大功告成,可惜沒有雙兒。
?
?
?
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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