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