掌桥专利:专业的专利平台
掌桥专利
首页

一种拆分包含多列信息的单字段的方法和装置

文献发布时间:2023-06-19 12:02:28


一种拆分包含多列信息的单字段的方法和装置

技术领域

本发明涉及计算机数据处理技术领域,尤其涉及一种拆分包含多列信息的单字段的方法和装置。

背景技术

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

在目前的实际业务场景和架构设计中,根据设计好的表名称和表字段说明文档建表和入库以及涉及到按照表结构设计说明文档建表和入库时,有的单个字段内部会包含多列信息,以分隔符为分隔,在后续的提取所有表字段信息时,现有的技术是通过人工手动处理这一行包含多列信息的字段的表、表字段信息,虽然保证了正确率和容错率,但是避免不了效率低下,尤其是当项目规模较大时,工作量就更加巨大;

如果只是对小项目、一两条记录进行处理,现在的做法并没有多大问题。但当涉及到项目大、记录数多的时候,现有做法存在重复性体力劳动操作,不够自动化,导致开发效率及其低下,会有人工成本太大或人手不够的风险,影响开发效率。

因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。

发明内容

本发明实施例提供一种拆分包含多列信息的单字段的方法,本发明实施例通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,该方法包括:

输入给定分隔符号和包含多列信息的单字段字符串;

建立关系型数据库函数;

根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;

根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。

本发明实施例还提供一种拆分包含多列信息的单字段的装置,包括:

输入模块,用于输入给定分隔符号和包含多列信息的单字段字符串;

关系型数据库函数建立模块,用于建立关系型数据库函数;

多行信息确定模块,用于根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;

多字段拆分结果确定模块,用于根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种拆分包含多列信息的单字段的方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述一种拆分包含多列信息的单字段的方法的计算机程序。

本发明实施例提供的一种拆分包含多列信息的单字段的方法和装置,包括:首先输入给定分隔符号和包含多列信息的单字段字符串;然后建立关系型数据库函数;接着根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;最后根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。本发明通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,尤其是在涉及到大规模项目开发情况时,能更好的节约产品的开发时间,提升开发质量。本发明根据要入库的文件的格式,设计基于行数据记录,依据给定分隔符号,来依次拆分处理,实现表字段的批量拆分。解决实际生产场景中的快速、批量拆分字段难的痛点,满足多行拆列的需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例一种拆分包含多列信息的单字段的方法示意图。

图2为本发明实施例一种拆分包含多列信息的单字段的方法的输入给定分隔符号和包含多列信息的单字段字符串示意图。

图3为本发明实施例一种拆分包含多列信息的单字段的方法的自定义函数的语法示意图。

图4为本发明实施例一种拆分包含多列信息的单字段的方法的定义分隔符参数、字符串参数和返回值类型示意图。

图5为本发明实施例一种拆分包含多列信息的单字段的方法的定义局部变量和变量类型示意图。

图6为本发明实施例一种拆分包含多列信息的单字段的方法的拆分函数示意图。

图7为本发明实施例一种拆分包含多列信息的单字段的方法的多行信息示意图。

图8为本发明实施例一种拆分包含多列信息的单字段的方法的确定多字段拆分结果过程示意图。

图9为本发明实施例一种拆分包含多列信息的单字段的方法的复用性实例图。

图10为本发明实施例一种拆分包含多列信息的单字段的方法的以“root”进行分割的表结构。

图11为本发明实施例一种拆分包含多列信息的单字段的方法的以汉字“函数”进行分割的表结构。

图12为运行本发明实施的一种拆分包含多列信息的单字段的方法的计算机装置示意图。

图13为本发明实施例一种拆分包含多列信息的单字段的装置示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本发明涉及大数据技术。图1为本发明实施例一种拆分包含多列信息的单字段的方法示意图,如图1所示,本发明实施例提供一种拆分包含多列信息的单字段的方法,本发明实施例通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,该方法包括:

步骤101:输入给定分隔符号和包含多列信息的单字段字符串;

步骤102:建立关系型数据库函数;

步骤103:根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;

步骤104:根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。

本发明实施例提供的一种拆分包含多列信息的单字段的方法,包括:首先输入给定分隔符号和包含多列信息的单字段字符串;然后建立关系型数据库函数;接着根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;最后根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。本发明通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,尤其是在涉及到大规模项目开发情况时,能更好的节约产品的开发时间,提升开发质量。本发明根据要入库的文件的格式,设计基于行数据记录,依据给定分隔符号,来依次拆分处理,实现表字段的批量拆分。解决实际生产场景中的快速、批量拆分字段难的痛点,满足多行拆列的需求。

由于在关系型数据库中,不能方便地使用类似HIVE的字符串分隔、行拆列、多行连接的函数或语法。但是同时数据库是支持自定义函数、以及循环语句的,可以将两者结合,通过自定义函数实现单字段多列信息的拆分,解决实际生产场景中的快速、批量拆分字段难的痛点,满足多行拆列的需求。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中可以包括:

输入给定分隔符号和包含多列信息的单字段字符串;

建立关系型数据库函数;

根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;

根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。

本发明实施例通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,尤其是在涉及到大规模项目开发情况时,能更好的节约产品的开发时间,提升开发质量。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中,给定分隔符号:包括:英文逗号,竖杠,上撇。

图2为本发明实施例一种拆分包含多列信息的单字段的方法的输入给定分隔符号和包含多列信息的单字段字符串示意图,如图2所示,具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中,输入给定分隔符号和包含多列信息的单字段字符串,包括:在输入端输入包含多列信息的列名称字段和分隔符号,分隔符号可以支持多种类型,比如:英文逗号’,’,竖杠’|’,上撇’`’等等常用的编程分隔符号。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中,建立关系型数据库函数,包括:

在关系型数据库中,调用输入参数,通过自定义函数以及循环处理逻辑,建立关系型数据库函数。

实施例中,建立的关系型数据库函数,主要实现根据给定分隔符,拆分字符串的功能。在关系型数据库中,调用输入参数,通过自定义函数以及循环处理逻辑,把单字段多列信息拆分成多行信息。

在数据库中,为了实现特定的功能,可以自定义函数。自定义函数的作用还包括:提高SQL语句的重用性,共享性和可移植性;减少重复代码的编写,提高程序的可读性;能够实现较快的执行速度,减少网络流量,提高程序编译和运行效率。自定义函数的语法如图3所示。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中,根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息,包括:

在TYPE包下面,创建一个表类型;

根据关系型数据库函数,创建拆分函数,定义分隔符参数、字符串参数和返回值类型;

定义局部变量和变量类型;

根据局部变量和变量类型,通过字符串参数,利用拆分函数遍历包含多列信息的单字段字符串,以分隔符参数循环截取每一段信息,输出多行信息存入表类型。

实施例中,为了计算拆分得到多行信息,主要过程包括:

在TYPE包下面,创建一个表类型,本步骤的样例代码如下:

CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2(4000);

如图4所示,根据关系型数据库函数,创建拆分函数fn_split,定义分隔符参数p_delimiter,字符串参数p_string,返回值类型ty_str_split;

其中,图4所示程序的伪代码,包括:

定义一个功能函数fn_split;

定义参数p_string为要分隔的字符串;

定义参数p_delimiter为分隔符号。

如图5所示,定义局部变量和变量类型;

其中,图5所示程序的伪代码,包括:

定义整数类型的变量j开始值为1;

定义整数类型的变量i开始值为1;

定义整数类型的变量len;

定义整数类型的变量len1;

定义变量str;

定义一个str_split,并初始化。

如图6所示,根据局部变量和变量类型,通过字符串参数,利用拆分函数fn_split遍历包含多列信息的字符串p_string,以分隔符p_delimiter循环截取(分隔)每一断信息,存入表类型ty_str_split,输出如图7所示的多行信息。

如图6所示,具体“实现根据局部变量和变量类型,通过字符串参数,利用拆分函数遍历包含多列信息的单字段字符串,以分隔符参数循环截取每一段信息,输出多行信息存入表类型”的伪代码,包括:

len<-length(p_string);

len1<-length(p_delimiter);

如果j

在p_string中检索第i次出现p_delimiter,并把值赋给变量j;

if(j=0);

j<-len;

str<-截取p_string的第i位字符开始到后面所有的字符串;

为增加的元素赋值;

if(i>len)则退出;

else

str<-截取p_string的第i位字符开始到j-1位的字符串;

i<-j+len1;

为增加的元素赋值;

结束if条件;

结束loop循环;

返回str_split;

其中,上述的len<-length(p_string),表示将字符串p_string的长度赋值到整数类型的变量len;上述的len1<-length(p_delimiter),表示将分隔符p_delimiter的长度赋值到整数类型的变量len1。

图8为本发明实施例一种拆分包含多列信息的单字段的方法的确定多字段拆分结果过程示意图,如图8所示,具体实施本发明实施例提供的一种拆分包含多列信息的单字段的方法时,在一个实施例中,根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果,包括:

调用关系型数据库创建的拆分函数,从表类型中提取多行信息;

将多行信息利用给定分隔符号进行分隔,确定以给定分隔符号隔离的多字段拆分结果。

实施例中,多字段拆分结果的确定过程,主要包括:

调用函数处理部分的拆分函数fn_split和输入的包含多列信息的字符串、分隔符,实现字符串分隔。

例如字符串:'/home/mysql/aa.cnf,/home/mysql/bb.cnf'使用逗号','分隔为'/home/mysql/aa.cnf'和'/home/mysql/bb.cnf'。

其中,图8所示程序的伪代码,包括:

SELECT*FROM拆分函数(要分隔的字符串,分隔符)。

例如:

SELECT*

FROM

TABLE(fn_split('/home/mysql/aa.cnf,/home/mysql/bb.cnf,/opt/search/20210101.txt,/opt/search/20210102.txt,/opt/search/20210103.txt,/opt/search/20210103.txt,/opt/search/

20210104.txt,/opt/search/20210105.txt,/opt/search/20210106.txt,/opt/search/2021010

7.txt,/opt/search/20210108.txt,/opt/search/20210109.txt,/opt/search/20210110.txt,/opt/

search/20210111.txt,/opt/search/20210112.txt,/opt/search/20210113.txt,/opt/search/20

210114.txt,/opt/search/20210115.txt,/opt/search/20210116.txt,/opt/search/20210117.txt,/opt/search/20210118.txt,/opt/search/20210119.txt,',','));

采用的逗号“,”作为给定分割符号,将字符串进行分隔。

再例如:

SELECT*

FROM

TABLE(fn_split('/home/mysql/aa.cnf||/home/mysql/bb.cnf||/opt/search/20210101.txt||/

opt/search/20210102.txt||/opt/search/20210103.txt','||'));

采用的竖杠“||”作为给定分割符号,将字符串进行分隔。

按照图8所示,调用关系型数据库创建的拆分函数,从表类型中提取多行信息,将多行信息利用给定分隔符号进行分隔,确定以给定分隔符号隔离的多字段拆分结果。

如图9、图10和图11所示,本发明实施例还支持复用性:该拆分函数也可以将"目标字符串"以"指定字符串"进行分割,并通过表结构返回结果。亦支持中文。

其中,图9所示程序的伪代码,包括:

SELECT*FROM拆分函数(要分隔的字符串,分隔符或汉字)。

例如:

SELECT*

FROM TABLE(fn_split('/home/mysql/aa.cnfroot/home/mysql/bb.cnf','root'));

采用的英文词语“root”作为给定分割符号,将字符串进行分隔。输出结果如图10所示。

再例如:

SELECT*

FROM TABLE(fn_split('功能性函数复用性','函数'));

采用的汉字“函数”作为给定分割符号,将字符串进行分隔。输出结果如图11所示。

下面结合具体场景,对本发明实施例提供的一种拆分包含多列信息的单字段的方法模块化实例进行简要描述,主要包括:

1.输入部分模块,输入包含多列信息的列名称字段,可以支持多种类型的给定分隔符。

2.逻辑处理模块,把以固定分隔符为分隔的列文件,直接导入关系型数据库里面为一个字段,根据指定分隔符,就可以把它转换成为一张正常的多字段表。

3.输出部分模块,输出以给定分隔符拆分转换后的多字段结果。

其中,输入部分模块:

该模块用于在输入端输入包含多列信息的列名称字段和分隔符号,分隔符号可以支持多种类型,比如:英文逗号’,’,竖杠’|’,上撇’`’等等常用的编程分隔符号。

其中,逻辑处理模块:

本模块主要是编写数据库函数,实现根据给定分隔符,拆分字符串的功能。

本模块调用输入部分模块的输入参数,通过自定义函数以及循环处理逻辑,把单字段多列信息拆分成多行信息。

在数据库中,为了实现特定的功能,可以自定义函数。自定义函数的作用还包括:提高SQL语句的重用性,共享性和可移植性;减少重复代码的编写,提高程序的可读性;能够实现较快的执行速度,减少网络流量,提高程序编译和运行效率。

本函数处理具体实现过程包括如下3部分:

1)在TYPE包下面,创建一个表类型,本模块的样例代码:

CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2(4000);

2)创建拆分函数fn_split,定义分隔符参数p_delimiter,字符串参数p_string,返回值类型ty_str_split。

3)循环处理逻辑部分,遍历字符串p_string,以分隔符p_delimiter循环截取(分隔)每一断信息,存入表类型ty_str_split。定义局部变量和变量类型,循环处理字符串逻辑。

其中,输出部分模块:

本模块通过调用2.函数处理部分的函数fn_split和1.输入部分输入包含多列信息的的字符串、分隔符,实现字符串分隔。

例如字符串:'/home/mysql/aa.cnf,/home/mysql/bb.cnf'使用逗号','分隔为'/home/mysql/aa.cnf'和'/home/mysql/bb.cnf'。

1)执行函数:

2)其他。复用性:本函数也可以将"目标字符串"以"指定字符串"进行分割,并通过表结构返回结果。亦支持中文。

本发明的关键点:根据要入库的文件的格式,设计基于行数据记录,依据给定分隔符,来依次拆分处理,实现表字段的批量拆分。

本发明通过编写一个函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,尤其是在涉及到大规模项目开

技术人员在实现本发明实施例的方法时,需要编写数据库函数,该函数支持以给定分隔符对包含多列信息的单字段处理。其中最重要/最难部分为:对字段按照实际分隔符拆分的处理,了解关系型数据库的函数和循环遍历逻辑处理思想。

本发明实施例提供的一种拆分包含多列信息的单字段的方法另一模块化实例,包括:

1.输入部分模块:输入包含多列信息的列名称和给定分隔符。

2.逻辑处理模块:根据输入的分隔符,对输入的多列信息依次进行循环遍历处理。

3.输出部分模块:输出按照输入的分隔符,拆分转换后的多字段结果。

图12为运行本发明实施的一种拆分包含多列信息的单字段的方法的计算机装置示意图,如图12所示,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种拆分包含多列信息的单字段的方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行实现上述一种拆分包含多列信息的单字段的方法的计算机程序。

本发明实施例中还提供了一种拆分包含多列信息的单字段的装置,如下面的实施例所述。由于该装置解决问题的原理与一种拆分包含多列信息的单字段的方法相似,因此该装置的实施可以参见一种拆分包含多列信息的单字段的方法的实施,重复之处不再赘述。

图13为本发明实施例一种拆分包含多列信息的单字段的装置示意图,如图13所示,本发明实施例还提供一种拆分包含多列信息的单字段的装置,具体实施时可以包括:

输入模块1301,用于输入给定分隔符号和包含多列信息的单字段字符串;

关系型数据库函数建立模块1302,用于建立关系型数据库函数;

多行信息确定模块1303,用于根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;

多字段拆分结果确定模块1304,用于根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的装置时,在一个实施例中,给定分隔符号:包括:英文逗号,竖杠,上撇。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的装置时,在一个实施例中,关系型数据库函数建立模块,具体用于:

在关系型数据库中,调用输入参数,通过自定义函数以及循环处理逻辑,建立关系型数据库函数。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的装置时,在一个实施例中,多行信息确定模块,具体用于:

在TYPE包下面,创建一个表类型;

根据关系型数据库函数,创建拆分函数,定义分隔符参数、字符串参数和返回值类型;

定义局部变量和变量类型;

根据局部变量和变量类型,通过字符串参数,利用拆分函数遍历包含多列信息的单字段字符串,以分隔符参数循环截取每一段信息,输出多行信息存入表类型。

具体实施本发明实施例提供的一种拆分包含多列信息的单字段的装置时,在一个实施例中,多字段拆分结果确定模块,具体用于:

调用关系型数据库创建的拆分函数,从表类型中提取多行信息;

将多行信息利用给定分隔符号进行分隔,确定以给定分隔符号隔离的多字段拆分结果。

综上,本发明实施例提供的一种拆分包含多列信息的单字段的方法和装置,包括:首先输入给定分隔符号和包含多列信息的单字段字符串;然后建立关系型数据库函数;接着根据关系型数据库函数对包含多列信息的单字段字符串进行循环遍历,确定多行信息;最后根据关系型数据库函数、多行信息和给定分隔符号,确定多字段拆分结果。本发明通过建立关系型数据库函数,利用函数拆分的思想,可以批量处理实现单字段多列信息的拆分,提高数据的处理速率,节约开发人员的时间,尤其是在涉及到大规模项目开发情况时,能更好的节约产品的开发时间,提升开发质量。本发明根据要入库的文件的格式,设计基于行数据记录,依据给定分隔符号,来依次拆分处理,实现表字段的批量拆分。解决实际生产场景中的快速、批量拆分字段难的痛点,满足多行拆列的需求。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种拆分包含多列信息的单字段的方法和装置
  • 将字段同步信息插入字段的单载波发送器及其方法
技术分类

06120113148526