謝玉鳳,董文浩
(四川省冶金地質(zhì)勘查局測繪工程大隊(duì),四川 成都 610212)
DB包是輕型的數(shù)據(jù)庫sqlite3的文件格式,因此其本質(zhì)是數(shù)據(jù)庫文件。表1所示為標(biāo)準(zhǔn)的數(shù)據(jù)庫表段結(jié)構(gòu)。從表1中可以很直觀地發(fā)現(xiàn)CCJZ、BCJZ和TYSDJZ表中字段相同或者類似。例如【CCJZ】表中的TBYBH與【BCJZ】表中的TBYBH就是字段完全相同的,【CCJZ】表中的TBYBH和【BCJZ】表中的TBYBH與【TYSDJZ】表中的JCBH就是屬于類似的字段。由于DB包數(shù)據(jù)庫中三期DB【FJ】表差異不大,本文不再詳細(xì)說明。
表1 三期DB包主要表段數(shù)據(jù)結(jié)構(gòu)
經(jīng)過筆者的研究與實(shí)踐,發(fā)現(xiàn)【CCJZ】表、【BCJZ】表和TYSDJZ】表中存在如表2所示的對照結(jié)構(gòu)。原理如此,但要達(dá)到最終目的,就要使用第三方工具中的通用的SQL語言去完成相應(yīng)操作。
表2 CCJZ表、BCJZ表和TYSDJZ表中主要字段對照表
SQLite Expert Professional是一款可視化SQLite數(shù)據(jù)庫管理工具,SQLite Expert允許用戶在SQLite 服務(wù)器上執(zhí)行創(chuàng)建、編輯、復(fù)制、提取等操作。它包括一個(gè)可視化查詢生成器,一個(gè)SQL編輯與語法突出和代碼自動完成,強(qiáng)大的table和view 設(shè)計(jì)與導(dǎo)入導(dǎo)出功能。其中執(zhí)行SQL查詢就是本文所講述的實(shí)現(xiàn)的最重要的過程,即SQLite Expert允許用戶輕松執(zhí)行SQL腳本并在網(wǎng)格中或文本中顯示結(jié)果,也可以通過附加數(shù)據(jù)庫的方式直接寫入查詢到的結(jié)果到目標(biāo)數(shù)據(jù)庫中。本文使用該軟件中執(zhí)行SQL查詢的功能完成數(shù)據(jù)庫之間的表格合并或者拆分步驟。
三調(diào)DB包拆分或者合并的應(yīng)用過程如圖1所示。該技術(shù)主要包含初次舉證(CCJZ)DB包、補(bǔ)充舉證(BCJZ)DB包和統(tǒng)一時(shí)點(diǎn)舉證(TYSDJZ)DB包,使用SQLite Expert軟件分步把CCJZ和BCJZ的舉證資料添加到TYSDJZ的DB包中和把這三者的數(shù)據(jù)量很大的DB包按照鄉(xiāng)鎮(zhèn)或者其他約束條件拆分成其他獨(dú)立的小DB包。其中合并和拆分使用的技術(shù)原理一樣。大致應(yīng)用過程如下:①準(zhǔn)備好標(biāo)準(zhǔn)結(jié)構(gòu)的結(jié)果DB包(拆分或者合并);②附加需要要合并或者要拆分的DB數(shù)據(jù)(BCJZ、CCJZ或者TYSDJZ);③分別選擇CCJZ、FJ和BCJZ、FJ以及TYSDJZ、FJ(拆分);④執(zhí)行SQL代碼合并或者拆分;⑤分離數(shù)據(jù)庫。
圖1 三調(diào)DB包拆分或者合并的應(yīng)用過程
本文主要通過 insert into SQL查詢語句,將查詢到滿足相關(guān)字段的記錄插入到目標(biāo)數(shù)據(jù)庫中。三期DB包中主要涉及到的就只有兩個(gè)表需要進(jìn)行代碼操作,CCJZ、BCJZ和TYSDJZ進(jìn)行代碼操作以及FJ表需要代碼操作。其中代碼實(shí)例如下。
1)TYSDJZ表。
insert into TYSDJZ(JCBH,XZQDM,XMC,JCMJ,XZB,YZB,BGDL,BZ,JZRY,TBFW) SELECT BYBH,XZQDM,XMC,TBMJ,XZB,YZB,WYRDDL,BZ,JZRY,TBFW FROM需要提取數(shù)據(jù)庫.BCJZ 或者需要提取數(shù)據(jù)庫.CCJZ
2)FJ表。
insert into FJ(F_ID,TCBM,TBYBH,XZQDM,JKBSM,FJMC,LYSB,FJLX,FJ,TakeOffLon,TakeOffLat,TakeOffRelHeight,TakeOffAltitude,PSSJ,PSJD,PSGD,PSFYJ,PSAltitude,PSRY,Longitude,Latitude,XZB,YZB,metaRecord,JYM) select F_ID,TCBM,TBYBH,XZQDM,JKBSM,FJMC,LYSB,FJLX,FJ,TakeOffLon,TakeOffLat,TakeOffRelHeight,TakeOffAltitude,PSSJ,PSJD,PSGD,PSFYJ,PSAltitude,PSRY,Longitude,Latitude,XZB,YZB,metaRecord,JYM from需要提取數(shù)據(jù)庫.FJ
在實(shí)際測繪項(xiàng)目生產(chǎn)過程中,需要用發(fā)現(xiàn)的眼光在身邊熟悉的軟件中找到項(xiàng)目面臨的難題的解決方案。筆者剛開始沒有使用SQL查詢語句,使用純手工的方式去復(fù)制粘貼記錄,發(fā)現(xiàn)DB包數(shù)據(jù)量大了后,不僅會操作很慢易卡機(jī),而且操作多條記錄的準(zhǔn)確性也難以保障。筆者本來準(zhǔn)備花個(gè)一兩天時(shí)間使用其他編程語言去開發(fā)一個(gè)小工具完成相關(guān)操作,但是如果沒有相應(yīng)的代碼積累,開發(fā)小工具的難度很大。因此,筆者使用SQLite Expert軟件中用簡便的SQL查詢語句代碼完成復(fù)雜的操作,研究了SQL查詢語句和對應(yīng)表的字段結(jié)構(gòu)后進(jìn)行實(shí)踐,發(fā)現(xiàn)完全可以使用SQLite Expert軟件解決項(xiàng)目面臨的問題,而不用花大量的時(shí)間去做編碼工作,此方法可供類似情況參考。
[ID:010226]