一种实现国土三调DB举证包拆分及合并的方法
2020-10-14谢玉凤董文浩
谢玉凤,董文浩
(四川省冶金地质勘查局测绘工程大队,四川 成都 610212)
1 三调DB包数据结构
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表中主要字段对照表
2 SQLite Expert软件功能特点
SQLite Expert Professional是一款可视化SQLite数据库管理工具,SQLite Expert允许用户在SQLite 服务器上执行创建、编辑、复制、提取等操作。它包括一个可视化查询生成器,一个SQL编辑与语法突出和代码自动完成,强大的table和view 设计与导入导出功能。其中执行SQL查询就是本文所讲述的实现的最重要的过程,即SQLite Expert允许用户轻松执行SQL脚本并在网格中或文本中显示结果,也可以通过附加数据库的方式直接写入查询到的结果到目标数据库中。本文使用该软件中执行SQL查询的功能完成数据库之间的表格合并或者拆分步骤。
3 三调DB包拆分或者合并的应用
三调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包拆分或者合并的应用过程
4 主要实现过程的SQL语言代码
本文主要通过 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
5 结束语
在实际测绘项目生产过程中,需要用发现的眼光在身边熟悉的软件中找到项目面临的难题的解决方案。笔者刚开始没有使用SQL查询语句,使用纯手工的方式去复制粘贴记录,发现DB包数据量大了后,不仅会操作很慢易卡机,而且操作多条记录的准确性也难以保障。笔者本来准备花个一两天时间使用其他编程语言去开发一个小工具完成相关操作,但是如果没有相应的代码积累,开发小工具的难度很大。因此,笔者使用SQLite Expert软件中用简便的SQL查询语句代码完成复杂的操作,研究了SQL查询语句和对应表的字段结构后进行实践,发现完全可以使用SQLite Expert软件解决项目面临的问题,而不用花大量的时间去做编码工作,此方法可供类似情况参考。
[ID:010226]