一种基于元数据的在线sql代码补全方法

文档序号:10612816阅读:268来源:国知局
一种基于元数据的在线sql代码补全方法
【专利摘要】本发明公开了一种基于元数据的在线SQL代码补全方法,对不同类型数据库连接信息进行配置管理;实现获取各种类型数据库元数据的接口;采用Jsp、jQuery和JavaScripts实现web端页面功能;改进Codemirror插件的SQL代码补全功能,修改补全规则,实时、动态地对不同类型SQL语句进行自动补全,并对交互结果进行动态显示。与现有技术相比,本发明的积极效果是:利用数据库的元数据信息,通过对Codemirror插件的SQL代码补全功能的改进,能够在线实现不同类型数据库SQL代码补全功能,替代数据开发人员使用的数据库商业客户端软件,能降低企业成本、提高工作效率。
【专利说明】
一种基于元数据的在线SQL代码补全方法
技术领域
[0001 ]本发明涉及一种基于元数据的在线SQL代码补全方法。
【背景技术】
[0002]随着大数据技术的蓬勃发展,企业对不同数据库之间的数据抽取、转换、加载的需求与日倶增,例如在ETL调度系统中,需要运行大量的不同数据库类型的SQL代码,包括MySQL、Hive、Oracle以及Cassandra。因此,在线SQL代码补全对于数据开发人员来说显得尤为重要。
[0003]目前不同类型的数据库均有相应的商业客户端工具,这些工具具有强大的自动补全功能,然而忽略经济成本的因素,开发人员在线编写SQL代码时,往往需要先在其对应的商业客户端工具中编写,继而复制至需要运行的地方,例如ETL调度系统。这种离线的工作流程大大降低了数据开发人员的工作效率。

【发明内容】

[0004]为了克服现有技术的缺点,本发明提供了一种基于元数据的在线SQL代码补全方法,为数据开发人员提供一种在线的、类似于数据库商业客户端的、同时支持不同类型数据库的SQL代码补全工具。
[0005]本发明所采用的技术方案是:一种基于元数据的在线SQL代码补全方法,包括如下内容:
[0006]—、对不同类型数据库连接信息进行配置管理,包括新增、删除、修改和查询功能;
[0007]二、实现获取各种类型数据库元数据的接口,包括:
[0008]I)根据数据库连接信息,获取与连接信息对应的数据库软件中所有数据库名的接P;
[0009]2)根据数据库连接信息和数据库名,获取与连接信息对应的数据库软件中指定数据库名下所有表名的接口 ;
[0010]3)根据数据库连接信息、数据库名以及表名,获取与连接信息对应的数据库软件中指定数据库中指定表名下的所有列名的接口 ;
[0011]三、采用Jsp、jQuery和JavaScripts实现web端页面功能;
[0012]四、改进Codemirror插件的SQL代码补全功能,修改补全规则,实时、动态地对不同类型SQL语句进行自动补全,并对交互结果进行动态显示。
[0013]与现有技术相比,本发明的积极效果是:利用数据库的元数据信息,通过对Codemirror插件的SQL代码补全功能的改进,能够在线实现不同类型数据库SQL代码补全功能,替代数据开发人员使用的数据库商业客户端软件,能降低企业成本、提高工作效率。
【附图说明】
[0014]本发明将通过例子并参照附图的方式说明,其中:
[0015]图1为本发明方法的实现流程图;
[0016]图2为补全关键字和数据库名示意图;
[0017]图3为补全表名和列名示意图;
【具体实施方式】
[0018]一种基于元数据的在线SQL代码补全方法,如图1所示,包括如下内容:
[0019]—、对不同类型数据库连接信息进行配置管理,包括新增、删除、修改和查询功能:
[0020]该部分内容作为后续步骤输入内容,供数据开发人员选择操作何种类型的数据库,建议使用Spring、MVC和mybatis结合的方式实现,其中数据库连接信息应包含以下字段:数据库ID、数据库类型、数据库配置名称、数据库URL、数据库用户名、数据库用户密码。为保证数据安全,请务必对数据库用户密码进行加密处理。
[0021]二、实现获取各种类型数据库元数据的接口,包括:
[0022]I)根据数据库连接信息,获取与连接信息对应的数据库软件中所有数据库名的接P;
[0023]2)根据数据库连接信息和数据库名,获取与连接信息对应的数据库软件中指定数据库名下所有表名的接口 ;
[0024]3)根据数据库连接信息和数据库名以及表名,获取与连接信息对应的数据库软件中指定数据库中指定表名下的所有列名的接口。
[0025]其中,MySQL采用JDBC执行SQL语句的形式,获取其数据库名、数据库名下的表和表名下的列;Oracle亦采用JDBC执行SQL语句的方式,获取当前用户下数据库实例名,表和表名下的列;Hive则采用调用元数据客户端HiveMetaStoreClient接口的方式,获取Hive中数据库名、数据库名下的表和表名下的列。
[0026]三、实现web端页面功能。
[0027]采用Jsp、jQuery和JavaScripts实现web端页面功能,包括数据库配置名称选择框、SQL输入框、web端和server端的交互等页面基本功能。
[0028]根据用户选择的数据库配置名称,判断当前用户将要操作某种类型数据库。
[0029]四、改进Codemirror插件的SQL代码补全功能,修改补全规则,实时、动态地对不同类型SQL语句进行自动补全,并对交互结果进行动态显示。
[°03°]目前,Codemirror插件的SQL代码补全功能,并不能满足实际应用的需求。由于其需要以完整的表结构信息作为输入,因此,使用原生版Codemirror插件的SQL代码补全功能,需要根据选中的数据库连接信息,一次得到该数据库中的所有表结构信息,在实际应用中,会存在具有很多列名的表以及包含大量表名的数据库,以至于web页面因为单次大规模数据的交互而崩溃。
[0031 ]因此,本发明对Codemirror插件的SQL代码补全功能进行改进,首先,当用户选中一条数据库连接信息,后台调用获取数据库名的接口,得到当前数据库软件中的所有数据库名。然后根据用户的输入信息,判断当前输入内容是否为关键字和数据库名,当用户输入时,则根据之前的内容,判断用户将要输入的内容是表名还是列名,并根据判断结果实时地调用相应的接口,获取用户可能要输入的表名和列名,继而进行匹配补全。通过上述改进,只有当用户输入时,才需要从后台精准的获取相关表名或列名,该方法能够大大降低web页面单次交互的数据量。
[0032]本发明具体补全规则如图2和3所示,具体的补全实现细节如下:
[0033]补全关键字和数据库名的规则如图2所示,当用户在SQL代码输入框进行SQL代码的编写,输入字符长度为3的内容时,将用户输入的内容和SQL关键字进行模糊匹配:如果匹配成功,则判定用户当前可能需要输入关键字,并提示用户可能需要输入的关键字,否则将用户输入的内容和从后台得到的数据库名进行模糊匹配:如果匹配成功,则判定用户当前可能需要输入数据库名,并提示用户可能需要输入的数据库名,否则当前无补全信息提示。
[0034]补全表名和列名的规则如图3所示,如用户输入则根据前的输入内容判断当前用户可能需要输入表名还是列名:若前的输入内容为数据库名,则调用获取数据库中表名的接口,获取“.”前数据库名下的表名,并将用户下一步输入内容同表名模糊匹配,如果匹配上,则提示用户可能需要输入的表名,否则当前无补全信息提示;若前的输入内容为表名,则调用获取数据库中,特定表的列名的接口,并将用户下一步输入内容同列名模糊匹配,如果匹配上,则提示用户可能需要输入的列名,否则当前无补全信息提示。
[0035]本发明基于web页面服务的B/S架构可等效替换为基于客户端服务的C/S架构;上述的Codemirror插件可等效替换为其他具有SQL代码补全功能的插件;而且在上述完整实施方式的基础上,可添加其他类型的数据库,如Cassandra。
【主权项】
1.一种基于元数据的在线SQL代码补全方法,其特征在于:包括如下内容: 一、对不同类型数据库连接信息进行配置管理,包括新增、删除、修改和查询功能; 二、实现获取各种类型数据库元数据的接口,包括: 1)根据数据库连接信息,获取与连接信息对应的数据库软件中所有数据库名的接口; 2)根据数据库连接信息和数据库名,获取与连接信息对应的数据库软件中指定数据库名下所有表名的接口; 3)根据数据库连接信息、数据库名以及表名,获取与连接信息对应的数据库软件中指定数据库中指定表名下的所有列名的接口 ; 三、采用Jsp、jQuery和JavaScripts实现web端页面功能; 四、改进Codemirror插件的SQL代码补全功能,修改补全规则,实时、动态地对不同类型SQL语句进行自动补全,并对交互结果进行动态显示。2.根据权利要求1所述的一种基于元数据的在线SQL代码补全方法,其特征在于:所述数据库连接信息包含以下字段:数据库ID、数据库类型、数据库配置名称、数据库URL、数据库用户名、数据库用户密码。3.根据权利要求2所述的一种基于元数据的在线SQL代码补全方法,其特征在于:所述数据库用户密码需进行加密处理。4.根据权利要求1所述的一种基于元数据的在线SQL代码补全方法,其特征在于=MySQL采用JDBC执行SQL语句的形式,获取其数据库名、数据库名下的表和表名下的列;Oracle亦采用JDBC执行SQL语句的方式,获取当前用户下数据库实例名,表和表名下的列;Hive采用调用元数据客户端HiveMetaStoreClient接口的方式,获取Hive中数据库名、数据库名下的表和表名下的列。5.根据权利要求1所述的一种基于元数据的在线SQL代码补全方法,其特征在于:所述web端页面功能包括数据库配置名称选择框、SQL代码输入框、web端和server端的交互。6.根据权利要求1所述的一种基于元数据的在线SQL代码补全方法,其特征在于:所述补全规则中补全关键字和数据库名的实现方法为:将用户输入的内容和SQL关键字进行模糊匹配:如果匹配成功,则判定用户当前可能需要输入关键字,并提示用户可能需要输入的关键字,否则将用户输入的内容和从后台得到的数据库名进行模糊匹配:如果匹配成功,则判定用户当前可能需要输入数据库名,并提示用户可能需要输入的数据库名,否则当前无补全信息提示。7.根据权利要求1所述的一种基于元数据的在线SQL代码补全方法,其特征在于:所述补全规则中补全表名和列名的实现方法包括如下步骤: 步骤一、用户输入 步骤二、判断前的输入内容是否为数据库名或表名:如是数据库名,则进入步骤三;如是表名,则进入步骤六;若两者都不是,则当前无补全信息提示。 步骤三、调用获取数据库中表名的接口,获取“”前数据库名下的所有表名; 步骤四、将用户下一步输入内容同表名匹配:如果匹配成功,则进入步骤五;否则当前无补全信息提示; 步骤五、提示用户可能需要输入的表名,供用户选择;若用户输入表名后,再次输入V’,则进入步骤六;否则表明用户不需要补全列名; 步骤六、根据输入信息获取前的表名和数据库名,调用获取指定数据库中指定表名下的所有列名的接口,获取V’前的表名下的列名; 步骤七、将用户下一步输入内容同列名匹配,如果匹配成功,则进入步骤八;否则当前无补全信息提示; 步骤八、提示用户可能需要输入的列名,供用户选择。
【文档编号】G06F17/30GK105975489SQ201610265319
【公开日】2016年9月28日
【申请日】2016年4月26日
【发明人】任红雷, 唐明, 常梦楠
【申请人】中国电子科技网络信息安全有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1