CN103605663B - 通用的数据库校验及元数据导入方法 - Google Patents
通用的数据库校验及元数据导入方法 Download PDFInfo
- Publication number
- CN103605663B CN103605663B CN201310499751.8A CN201310499751A CN103605663B CN 103605663 B CN103605663 B CN 103605663B CN 201310499751 A CN201310499751 A CN 201310499751A CN 103605663 B CN103605663 B CN 103605663B
- Authority
- CN
- China
- Prior art keywords
- importing
- configuration
- import
- data
- metadata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Abstract
本发明公开了一种通用的数据库校验及元数据导入方法,程序构建即插即用式的通用的元数据导入模块,可热插拔到分散自律电力数据管理平台中。模块支持对之前通过通用元数据导出模块或第三方应用系统持久存储到关系型数据库中的海量数据进行自定义查询和过滤,并转换为数据管理平台所支持的以三层HashMap结构表示的元数据。本发明将位于关系型数据库中的海量数据筛选为数据管理平台所能识别的三层HashMap元数据,并存储到Felix容器(内存)中,使得数据管理平台的处理层和输出层各模块能够方便灵活地获取历史生产数据,同时也有效降低了这些模块的开发难度。
Description
技术领域
本发明涉及电力系统数据处理方法领域,具体为一种通用的数据库校验及元数据导入方法。
背景技术
目前众多的电力应用大多采用关系型数据库来存储海量历史生产数据,但它们各自基于的数据标准和格式往往不同,从而导致了数据库表结构的不同。因此,现有电力系统在不修改代码的前提下,几乎不可能复用其他系统的生产数据,从而增加了下游各数据查询和分析子系统的开发难度和成本。
发明内容
为了克服上述现有技术的不足,本发明的目的是提供一种通用的数据库校验及元数据导入方法。
为了达到上述目的,本发明所采用的技术方案为:
通用的数据库校验及元数据导入方法,其特征在于:程序构建即插即用式的通用的元数据导入模块,所述元数据导入模块逻辑结构如下:
导入配置的定义,编辑元数据导入所必要的配置信息,配置信息保存在UI或配置文件中;
导入配置的校验,检查UI或配置文件中的导入配置信息是否与源数据库的结构匹配以及是否满足三层HashMap的存储要求;
行过滤条件的定义,在UI中通过可视化的方式对源数据库中的各表设置过滤条件以得到需要的记录行,并能指定多个过滤条件的连接逻辑;
导入为元数据:按照导入配置和过滤条件将任意数据库中的关系型数据转换为三层HashMap结构并存入电力数据管理平台;
手动运行方式,用户通过操作模块提供的UI来自定义和校验导入配置信息并执行导入;
自动运行方式,实现自律分散的即插即用电力数据管理平台中输入层定义的接口,并通过手动运行方式下得到的含有导入配置信息的配置文件完成校验和导入逻辑。
所述的通用的数据库校验及元数据导入方法,其特征在于:导入配置的定义过程如下:
步骤1:手动方式启动模块,选择数据库类型以及要导入的源数据库;
步骤2:选择要导入的数据表;
步骤3:定义生成的元数据名称并选择一次或多次定时导入;
步骤4:对于每个要导入的表,定义其对应的Tag名称以及其下所有字段对应的Key名称;
步骤5:对于每个要导入的表,选择其要导入的字段以及三层HashMap的中层Key值的组成字段;
步骤6:对于每个要导入的表,定义其数据行过滤条件。
所述的通用的数据库校验及元数据导入方法,其特征在于:导入配置的校验过程如下:
步骤1:检查导入配置是否未指定单表可导入的最大记录行数或行数非法;
步骤2:检查导入配置是否未指定要导入的源数据库名称;
步骤3:检查导入配置指定的要导入的源数据库是否不存在;
步骤4:检查导入配置是否未指定要导入的表名或表名为空;
步骤5:检查导入配置是否指定了多个同名的导入表或导入表不存在;
步骤6:检查导入配置是否未指定导入表对应的Tag名或多个导入表对应的Tag名相同;
步骤7:检查导入配置是否未指定导入表的导入字段名或字段名为空;
步骤8:检查导入配置指定的导入表的导入字段是否不存在;
步骤9:检查导入配置是否未指定导入表的导入字段对应的Key名或Key名为空;
步骤10:检查导入配置是否未指定导入表的中层Key值的组成字段名或字段名不存在;
步骤11:检查导入配置是否未指定导入表对应的数据行计数SQL语句或SQL语句存在语法错误;
步骤12:检查导入配置指定的导入表对应的数据行计数SQL语句的返回数据行数超过了指定的单表最大行数;
步骤13:检查导入配置是否未指定导入表的中层Key值SQL语句或SQL语句存在语法错误;
步骤14:检查导入配置指定的导入表的中层Key值SQL语句的返回数据行是否包含多个相同的值;
步骤15:检查导入配置是否未指定导入表的数据行过滤SQL语句或SQL语句存在语法错误。
所述的通用的数据库校验及元数据导入方法,其特征在于:行过滤条件的定义过程如下:
步骤1:选择过滤条件包含的字段名;
步骤2:选择过滤条件包含的运算符;
步骤3:选择过滤条件包含的参考值;
步骤4:选择过滤条件包含的运算符;
步骤5:选择过滤条件之间的连接逻辑;
步骤6:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤7:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤8:预览过滤后的数据。
所述的通用的数据库校验及元数据导入方法,其特征在于:将过滤数据中每个二维结构表转换为两层HashMap结构,最终形成以三层HashMap形式存放的元数据,并存入电力数据管理平台。
所述的通用的数据库校验及元数据导入方法,其特征在于:自律分散的即插即用数据平台可以通过手动运行方式下得到的含有导入配置信息的配置文件,自动完成数据库的校验和导入逻辑,过程如下:
步骤1:以手动方式运行本模块;
步骤2:用户操作模块的UI,选择和编辑导入配置信息,并将配置信息保存为配置文件;
步骤3:启动自律分散的即插即用数据平台,并以可视化拖曳的方式在数据平台的输入层创建本模块的实例;
步骤4:为实例指定配置文件,并启动实例,此后数据平台将通过输入层接口定义的回调方法触发校验和导入逻辑。
本发明支持对之前以通用元数据导出模块或第三方应用系统持久存储到关系型数据库中的海量数据进行自定义查询和过滤,并转换为数据管理平台所支持的以三层HashMap结构表示的元数据,使得数据管理平台的处理层和输出层各模块能够方便灵活地获取历史生产数据,同时也有效降低了这些模块的开发难度。
本发明与现有的技术相比,具有如下优点:
(1),模块即插即用,可定义程度高。模块以OSGi的Bundle形式热插拔到数据管理平台中,所有可配置部分均存放在独立的配置文件中或通过数据管理平台的UI指定。
(2),代码清晰分层,可扩展性高。模块被划分为Model、Dao、Biz及UI等逻辑层,层间单向依赖,对电网应用的快速需求变更具有很好的适应性。
(3),同时支持MySQL和Oracle数据库,多个并发模块的数据查询效率较高。模块能自动判断源数据库是由通用元数据导出模块还是由其他第三方应用系统创建的。
(4),完善的校验逻辑和详细的提示信息。无论是手动还是自动运行方式,模块均提供了各种可能出现的无意或恶意的导入配置的校验逻辑以及详细的错误提示信息。
附图说明
图1为本发明功能及逻辑划分图。
图2为本发明将过滤后的数据转换为三层HashMap结构的流程图。
图3为本发明更新三层HashMap中Tag和Key名的流程图。
具体实施方式
通用的数据库校验及元数据导入方法,程序构建即插即用式的通用的元数据导入模块,元数据导入模块逻辑结构如下:
导入配置的定义,编辑元数据导入所必要的配置信息,配置信息保存在UI或配置文件中;
导入配置的校验,检查UI或配置文件中的导入配置信息是否与源数据库的结构匹配以及是否满足三层HashMap的存储要求;
行过滤条件的定义,在UI中通过可视化的方式对源数据库中的各表设置过滤条件以得到需要的记录行,并能指定多个过滤条件的连接逻辑;
导入为元数据:按照导入配置和过滤条件将任意数据库中的关系型数据转换为三层HashMap结构并存入电力数据管理平台;
手动运行方式,用户通过操作模块提供的UI来自定义和校验导入配置信息并执行导入;
自动运行方式,实现自律分散的即插即用电力数据管理平台中输入层定义的接口,并通过手动运行方式下得到的含有导入配置信息的配置文件完成校验和导入逻辑。
导入配置的定义过程如下:
步骤1:手动方式启动模块,选择数据库类型以及要导入的源数据库;
步骤2:选择要导入的数据表;
步骤3:定义生成的元数据名称并选择一次或多次定时导入;
步骤4:对于每个要导入的表,定义其对应的Tag名称以及其下所有字段对应的Key名称;
步骤5:对于每个要导入的表,选择其要导入的字段以及三层HashMap的中层Key值的组成字段;
步骤6:对于每个要导入的表,定义其数据行过滤条件。
导入配置的校验过程如下:
步骤1:检查导入配置是否未指定单表可导入的最大记录行数或行数非法;
步骤2:检查导入配置是否未指定要导入的源数据库名称;
步骤3:检查导入配置指定的要导入的源数据库是否不存在;
步骤4:检查导入配置是否未指定要导入的表名或表名为空;
步骤5:检查导入配置是否指定了多个同名的导入表或导入表不存在;
步骤6:检查导入配置是否未指定导入表对应的Tag名或多个导入表对应的Tag名相同;
步骤7:检查导入配置是否未指定导入表的导入字段名或字段名为空;
步骤8:检查导入配置指定的导入表的导入字段是否不存在;
步骤9:检查导入配置是否未指定导入表的导入字段对应的Key名或Key名为空;
步骤10:检查导入配置是否未指定导入表的中层Key值的组成字段名或字段名不存在;
步骤11:检查导入配置是否未指定导入表对应的数据行计数SQL语句或SQL语句存在语法错误;
步骤12:检查导入配置指定的导入表对应的数据行计数SQL语句的返回数据行数超过了指定的单表最大行数;
步骤13:检查导入配置是否未指定导入表的中层Key值SQL语句或SQL语句存在语法错误;
步骤14:检查导入配置指定的导入表的中层Key值SQL语句的返回数据行是否包含多个相同的值;
步骤15:检查导入配置是否未指定导入表的数据行过滤SQL语句或SQL语句存在语法错误。
行过滤条件的定义过程如下:
步骤1:选择过滤条件包含的字段名;
步骤2:选择过滤条件包含的运算符;
步骤3:选择过滤条件包含的参考值;
步骤4:选择过滤条件包含的运算符;
步骤5:选择过滤条件之间的连接逻辑;
步骤6:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤7:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤8:预览过滤后的数据。
将过滤数据中每个二维结构表转换为两层HashMap结构,最终形成以三层HashMap形式存放的元数据,并存入电力数据管理平台。
自律分散的即插即用数据平台可以通过手动运行方式下得到的含有导入配置信息的配置文件,自动完成数据库的校验和导入逻辑,过程如下:
步骤1:以手动方式运行本模块;
步骤2:用户操作模块的UI,选择和编辑导入配置信息,并将配置信息保存为配置文件;
步骤3:启动自律分散的即插即用数据平台,并以可视化拖曳的方式在数据平台的输入层创建本模块的实例;
步骤4:为实例指定配置文件,并启动实例,此后数据平台将通过输入层接口定义的回调方法触发校验和导入逻辑。
如图1所示,本发明为一种通用的元数据导入模块,可热插拔到分散自律电力数据管理平台中。模块支持以手动操作UI和自动通过电力数据管理平台的输入层接口回调2种工作方式完成导入配置的编辑、校验、保存以及源数据库的数据过滤和导入。
实施例1,将过滤后的数据库数据转换为以三层HashMap结构存放的元数据。
首先,对过滤数据中的每个数据表进行迭代,并构造相应的顶层HashMap;接着,对数据表的所有记录行进行迭代,构造相应的中层HashMap,并以导入配置指定的中层Key字段的组成值作为中层HashMap的Key值;最后,对记录行中的所有数据列进行迭代,构造相应的底层HashMap。具体流程如图2所示。
实施例2,更新三层HashMap中的各个Tag和Key名。
将过滤后的数据库数据转换为以三层HashMap结构存放的元数据后,各顶层及底层HashMap的Key名默认使用对应的数据表名和字段名,可能不满足用户的需求,因此需要更新。更新的方法为依次迭代每层HashMap,并使用导入配置中的表名/Tag名、字段名/Key名的映射信息,替换各顶层及底层HashMap的Key名。具体流程如图3所示。
Claims (6)
1.通用的数据库校验及元数据导入方法,其特征在于:程序构建即插即用式的通用的元数据导入模块,所述元数据导入的过程如下:
导入配置的定义,编辑元数据导入所必要的配置信息,配置信息保存在UI或配置文件中;
导入配置的校验,检查UI或配置文件中的导入配置信息是否与源数据库的结构匹配以及是否满足三层HashMap的存储要求;
行过滤条件的定义,在UI中通过可视化的方式对源数据库中的各表设置过滤条件以得到需要的记录行,并能指定多个过滤条件的连接逻辑;
导入为元数据:按照导入配置和过滤条件将任意数据库中的关系型数据转换为三层HashMap结构并存入电力数据管理平台;
手动运行方式,用户通过操作模块提供的UI来自定义和校验导入配置信息并执行导入;
自动运行方式,实现自律分散的即插即用电力数据管理平台中输入层定义的接口,并通过手动运行方式下得到的含有导入配置信息的配置文件完成校验和导入逻辑。
2.根据权利要求1所述的通用的数据库校验及元数据导入方法,其特征在于:导入配置的定义过程如下:
步骤1:手动方式启动模块,选择数据库类型以及要导入的源数据库;
步骤2:选择要导入的数据表;
步骤3:定义生成的元数据名称并选择一次或多次定时导入;
步骤4:对于每个要导入的表,定义其对应的Tag名称以及其下所有字段对应的Key名称;
步骤5:对于每个要导入的表,选择其要导入的字段以及三层HashMap的中层Key值的组成字段;
步骤6:对于每个要导入的表,定义其数据行过滤条件。
3.根据权利要求1所述的通用的数据库校验及元数据导入方法,其特征在于:导入配置的校验过程如下:
步骤1:检查导入配置是否未指定单表可导入的最大记录行数或行数非法;
步骤2:检查导入配置是否未指定要导入的源数据库名称;
步骤3:检查导入配置指定的要导入的源数据库是否不存在;
步骤4:检查导入配置是否未指定要导入的表名或表名为空;
步骤5:检查导入配置是否指定了多个同名的导入表或导入表不存在;
步骤6:检查导入配置是否未指定导入表对应的Tag名或多个导入表对应的Tag名相同;
步骤7:检查导入配置是否未指定导入表的导入字段名或字段名为空;
步骤8:检查导入配置指定的导入表的导入字段是否不存在;
步骤9:检查导入配置是否未指定导入表的导入字段对应的Key名或Key名为空;
步骤10:检查导入配置是否未指定导入表的中层Key值的组成字段名或字段名不存在;
步骤11:检查导入配置是否未指定导入表对应的数据行计数SQL语句或SQL语句存在语法错误;
步骤12:检查导入配置指定的导入表对应的数据行计数SQL语句的返回数据行数超过了指定的单表最大行数;
步骤13:检查导入配置是否未指定导入表的中层Key值SQL语句或SQL语句存在语法错误;
步骤14:检查导入配置指定的导入表的中层Key值SQL语句的返回数据行是否包含多个相同的值;
步骤15:检查导入配置是否未指定导入表的数据行过滤SQL语句或SQL语句存在语法错误。
4.根据权利要求1所述的通用的数据库校验及元数据导入方法,其特征在于:行过滤条件的定义过程如下:
步骤1:选择过滤条件包含的字段名;
步骤2:选择过滤条件包含的运算符;
步骤3:选择过滤条件包含的参考值;
步骤4:选择过滤条件包含的运算符;
步骤5:选择过滤条件之间的连接逻辑;
步骤6:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤7:在产生的SQL语句的合适位置添加括号以显式改变多个过滤条件的运算优先级;
步骤8:预览过滤后的数据。
5.根据权利要求1所述的通用的数据库校验及元数据导入方法,其特征在于:将过滤数据中每个二维结构表转换为两层HashMap结构,最终形成以三层HashMap形式存放的元数据,并存入电力数据管理平台。
6.根据权利要求1所述的通用的数据库校验及元数据导入方法,其特征在于:自律分散的即插即用数据平台可以通过手动运行方式下得到的含有导入配置信息的配置文件,自动完成数据库的校验和导入逻辑,过程如下:
步骤1:以手动方式运行本模块;
步骤2:用户操作模块的UI,选择和编辑导入配置信息,并将配置信息保存为配置文件;
步骤3:启动自律分散的即插即用数据平台,并以可视化拖曳的方式在数据平台的输入层创建本模块的实例;
步骤4:为实例指定配置文件,并启动实例,此后数据平台将通过输入层接口定义的回调方法触发校验和导入逻辑。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310499751.8A CN103605663B (zh) | 2013-10-22 | 2013-10-22 | 通用的数据库校验及元数据导入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310499751.8A CN103605663B (zh) | 2013-10-22 | 2013-10-22 | 通用的数据库校验及元数据导入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103605663A CN103605663A (zh) | 2014-02-26 |
CN103605663B true CN103605663B (zh) | 2017-02-15 |
Family
ID=50123888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310499751.8A Expired - Fee Related CN103605663B (zh) | 2013-10-22 | 2013-10-22 | 通用的数据库校验及元数据导入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103605663B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992498B (zh) * | 2016-10-27 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 一种将数据导入数据仓库的方法及系统 |
CN110389941B (zh) * | 2019-06-19 | 2021-01-05 | 平安国际智慧城市科技股份有限公司 | 数据库校验方法、装置、设备及存储介质 |
CN110647566B (zh) * | 2019-09-03 | 2023-04-14 | 平安科技(深圳)有限公司 | 模板表格的智能导入方法、装置及计算机可读存储介质 |
CN111026432A (zh) * | 2019-12-06 | 2020-04-17 | 中国建设银行股份有限公司 | 一种大数据处理平台、平台构建方法和存储介质 |
CN113407603B (zh) * | 2021-05-13 | 2022-10-04 | 北京鼎轩科技有限责任公司 | 数据导出方法及系统 |
CN113961625B (zh) * | 2021-10-27 | 2022-06-07 | 北京科杰科技有限公司 | 一种异构大数据管理平台任务迁移方法 |
CN115438024A (zh) * | 2022-08-23 | 2022-12-06 | 光大环境科技(中国)有限公司 | 数据导入中台的方法、装置、系统、电子设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193917A (zh) * | 2010-03-01 | 2011-09-21 | 中国移动通信集团公司 | 一种数据处理和查询方法和装置 |
CN102375891A (zh) * | 2011-11-15 | 2012-03-14 | 山东浪潮金融信息系统有限公司 | 一种增量数据卸载和装载的实施工具 |
CN102693297A (zh) * | 2012-05-16 | 2012-09-26 | 华为技术有限公司 | 数据处理方法、节点和提取、转换和加载etl系统 |
-
2013
- 2013-10-22 CN CN201310499751.8A patent/CN103605663B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193917A (zh) * | 2010-03-01 | 2011-09-21 | 中国移动通信集团公司 | 一种数据处理和查询方法和装置 |
CN102375891A (zh) * | 2011-11-15 | 2012-03-14 | 山东浪潮金融信息系统有限公司 | 一种增量数据卸载和装载的实施工具 |
CN102693297A (zh) * | 2012-05-16 | 2012-09-26 | 华为技术有限公司 | 数据处理方法、节点和提取、转换和加载etl系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103605663A (zh) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103605663B (zh) | 通用的数据库校验及元数据导入方法 | |
CN101236554B (zh) | 一种数据库海量数据比对的方法 | |
CN104572895B (zh) | MPP数据库与Hadoop集群数据互通方法、工具及实现方法 | |
CN106528674B (zh) | 基于Hbase行健的高性能查询方法和装置 | |
CN104408159B (zh) | 一种数据关联、加载、查询方法及装置 | |
CN103995854A (zh) | 一种设备跨版本升级方法和装置 | |
CN105447174A (zh) | 一种报表生成方法及装置 | |
CN110309125A (zh) | 数据校验方法、电子装置及存储介质 | |
CN102426587A (zh) | 一种基于复杂产品异构bom的定制查询方法 | |
CN102708203A (zh) | 一种基于xml元数据的数据库动态管理方法 | |
CN106021344B (zh) | 一种多适应性cime电网模型共享方法 | |
CN102902778A (zh) | 查询语句优化装置和查询语句优化方法 | |
CN104978411A (zh) | 一种高速列车的车型开发方法和装置 | |
CN106815366A (zh) | 一种批量生成数据的方法及系统 | |
CN102521332B (zh) | 基于强模拟的图模式匹配方法、装置及系统 | |
CN106127863B (zh) | 一种冰箱发泡模具系列化设计系统及其方法 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN111143467A (zh) | 一种实现分布式异构数据共享的云平台的数据共享方法 | |
CN104123376B (zh) | 一种基于列模板的智能文本数据采集方法和系统 | |
CN105956188A (zh) | 一种在不同类型数据库间导出导入二进制文件的方法 | |
CN105824926A (zh) | 一种动态选择调用外部系统接口的方法 | |
CN105912723A (zh) | 一种自定义字段的存储方法 | |
CN109213751B (zh) | 一种基于Spark平台的Oracle数据库并行迁移方法 | |
CN114490724B (zh) | 处理数据库查询语句的方法和装置 | |
CN109445872A (zh) | 一种应用于多网口Linux服务器确定各网口物理位置的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 Termination date: 20171022 |
|
CF01 | Termination of patent right due to non-payment of annual fee |