【技术实现步骤摘要】
一种对DB2数据库建表日志列名解析的方法及装置
本专利技术涉及计算机数据备份容灾
,特别是涉及一种对DB2数据库建表日志列名解析的方法及装置。
技术介绍
DB2为IBM开发的一种大型关系型数据库平台,它支持多用户或应用程序在同一条SQL语句中查询不同database甚至不同DBMS中的数据,是目前使用最广泛的关系数据库系统之一。目前,DB2数据库在解析CreateTable(建表)日志时会依次产生三种类型的日志数据:一种是Componentidentifier为11、Functionidentifier为4的原始SQL日志记录,需要设置数据库属性LOG_DDL_STMTS为YES;一种是Componentidentifier为4、Functionidentifier为101的建表日志记录;还有一种是Componentidentifier为1、Functionidentifier为128的初始化表的日志记录,要求在建表或修改表时声明datacapturechanges属性,其中,原始SQL日志记录包括输入SQL的原文,建表日志的数据均为数据库内部使用,初始化表日志中主要包含表的列属性与列的个数等。在实时解析CreateTable(建表)操作时,需获取到表名与表结构,其中表结构主要包括列名与列属性,可以从原始SQL日志记录分析中获取表名、在初始化表日志中可获取到列属性但没有列名,而在解析完毕将JSON格式的新建表的基本信息发送至KAFKA时,需要发送表名、schema名、列名、列属性等信息。 ...
【技术保护点】
1.一种对DB2数据库建表日志列名解析的方法,包括如下步骤:/n步骤S1,在解析建表日志时,对原始SQL日志进行解析,从SQL语句中分离出表名和schema名,并存入用于表示表基本信息的一解析结构体中;/n步骤S2,对初始化表的日志,从中获取表ID、表空间ID以及表的各列属性信息,存入所述解析结构体中,并构建一个任务结构体,于所述任务结构体设置一个建表操作的标志数,将获取到的表ID、表空间ID存所述任务结构体中;/n步骤S3,按照任务队列的顺序读取任务结构体,并判断是否建表操作,对于建表操作,根据所述任务结构体、解析结构体及数据库系统表获取表名、schema名、列名、列属性等信息拼装成JSON格式的SQL操作的基本信息发送到KAFKA。/n
【技术特征摘要】
1.一种对DB2数据库建表日志列名解析的方法,包括如下步骤:
步骤S1,在解析建表日志时,对原始SQL日志进行解析,从SQL语句中分离出表名和schema名,并存入用于表示表基本信息的一解析结构体中;
步骤S2,对初始化表的日志,从中获取表ID、表空间ID以及表的各列属性信息,存入所述解析结构体中,并构建一个任务结构体,于所述任务结构体设置一个建表操作的标志数,将获取到的表ID、表空间ID存所述任务结构体中;
步骤S3,按照任务队列的顺序读取任务结构体,并判断是否建表操作,对于建表操作,根据所述任务结构体、解析结构体及数据库系统表获取表名、schema名、列名、列属性等信息拼装成JSON格式的SQL操作的基本信息发送到KAFKA。
2.如权利要求1所述的一种对DB2数据库建表日志列名解析的方法,其特征在于:于步骤S1中,对于原始SQL日志中带括号的建表语句,对其按照首个左括号和其前的空格分离得到表名和schema名。
3.如权利要求2所述的一种对DB2数据库建表日志列名解析的方法,其特征在于:对于原始SQL日志中不带括号的建表语句,根据建表语法分离得到表名和schema名。
4.如权利要求3所述的一种对DB2数据库建表日志列名解析的方法,其特征在于:于步骤S3中,首先按照任务队列的顺序读取任务结构体,根据步骤S2中设置的标志数确定当前任务结构体的操作是否建表操作,若是建表操作,再根据所述任务结构体中保存的表ID和表空间ID找到相应的解析结构体;依据所述解析结构体提供的表名以及表的schema名于数据库系统表中查询获得相应的列名,并将列名存入所述解析结构体,使所述解析结构体中的列属性和列名相互对应;最后将所述解析结构体中的表名、schema名、各列列名和列属性等拼装成JSON格式的建表操作的基本信息,并将其发送至KAFKA。
5.如权利要求4所述的一种对DB2数据库建表日志列名解析的方法,其特征在于:在将相应的列名存入所述解析结构体之前,将查询到的信息存入一个新的暂时结构体中,并将其与所述解析结构体进行比较,进行异常处理。
6.如权利要求5所述的一种对DB2数据库建表日志列名解析的方法,其特征在于:于步骤S3中,在将相应的列名存入所述解析结构体之前,判断所述解析结构体与所述暂时结构体中保存的...
【专利技术属性】
技术研发人员:蓝炳雄,高志会,胡军擎,江俊,
申请(专利权)人:上海英方软件股份有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。