一种文件数据表结构的自动生成的方法及计算机设备与流程

文档序号:15271648发布日期:2018-08-28 22:30阅读:199来源:国知局
本发明涉及一种文件数据表结构的自动生成的方法及计算机设备。
背景技术
::普通用户对无模式的(schemaless)文件若想使用结构化查询语言(sql)进行处理,通常做法是:i)用户定义表结构(tableschema)ii)用户根据表结构编写完整的程序将文件里的数据转化成结构化数据。首先用户定义表结构容易出错(尤其当字段多,类型复杂时),其次编写程序对普通用户要求较高,且过程长效率低(写代码、编译、调试反复进行)。技术实现要素:本发明要解决的技术问题,在于提供一种文件数据表结构的自动生成的方法及计算机设备,通过内置分割符或解析函数先将数据结构化,然后再自动推导出表结构,使得人工介入较少,效率高。本发明之一是这样实现的:一种文件数据表结构的自动生成的方法,包括:步骤1、若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数;步骤2、将每个列进行命名,并根据该列的值区分字段类型;步骤3、根据每行的内容、列名以及字段类型生成对应的表。进一步地,所述步骤1进一步具体为:若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数,若某行解析出的列数与之前解析的列数不符时,则丢弃该行。本发明之二是这样实现的:一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:步骤1、若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数;步骤2、将每个列进行命名,并根据该列的值区分字段类型;步骤3、根据每行的内容、列名以及字段类型生成对应的表。进一步地,所述步骤1进一步具体为:若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数,若某行解析出的列数与之前解析的列数不符时,则丢弃该行。本发明具有如下优点:1)用户负担低不易错——只需提供分割符类型、编写最少量代码和少量列名、列属性修改;其余的代码和表结构生成交由系统完成。2)容易管理——代码总体架构已经由系统定义好,只需管理分隔符和自定义解析函数即可。3)扩展性好——一个文件可以定义多种分割类型或多个自定义解析函数,实现一个文件对应多个表结构。附图说明下面参照附图结合实施例对本发明作进一步的说明。图1为本发明内置解析程序流程图。图2为本发明非文本类型解析模块流程图。图3为本发明方法流程图。具体实施方式本发明文件数据表结构的自动生成的方法,包括:步骤1、若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;步骤2、将每个列进行命名,并根据该列的值区分字段类型;步骤3、根据每行的内容、列名以及字段类型生成对应的表。本发明计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:步骤1、若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;若文件类型为非文本类型文件,则通过函数udf对文件字节流进行解析,得到每行数据以及每行列数,若某行解析出的列数与之前解析的列数不符时,则丢弃该行;步骤2、将每个列进行命名,并根据该列的值区分字段类型;步骤3、根据每行的内容、列名以及字段类型生成对应的表。本发明一种具体实施方式:如图1至图3所示,结构:结构化处理系统,表结构推导系统,元数据系统,用户主要步骤:a:文件结构化过程1)对文本类型的文件,用户输入分割符类型(空格、\t、\001等)或输入正则表达式,做为内置解析程序的参数;2)结构化处理系统的内置解析程序依据分割符类型对文件每行数据解析成列,并依据用户输入的正则表达式(regexp)提取每列的内容;可以没有正则表达式,则不做列内容提取;3)内置解析程序对每行数据按2)的手段进行处理,如果遇到某行解析出的列数与前面解析出的列数不符,则丢弃该行或报异常退出;4)内置解析程序将解析出的列数和各列的部分取值传给表结构推导系统;5)对非文本类型文件,输入自定义解析函数udf(userdefinefunction),二进制流可以是用户私有的格式,如何解析要由用户自己实现,只要udf能接受二进制流,输出的列为txt格式即可,根据非文本类型文件,对应定义一个解析函数;6)结构化处理系统的非文本类型解析模块调用udf对文件字节流进行处理,解析出一行数据(每行包含多个列),函数udf控制读取多少字节流,并从流中解析出列;7)非文本类型解析模块不断重复6),直到字节流末尾。每迭代调用一次udf,则形成结构化表中的新行。如果后续行的列数与前行列数不符,则丢弃该行或报异常退出。b:表结构推导生成1)将a生成的列,自动对应进行列命名(如f1,f2)。2)将a生成的列,根据取值特征判断区分为字符串类型(string)、数值类型、日期类型等。3)针对1)和2)形成的列名和字段类型,提供编辑界面,便于用户检查修改列名、类型。4)依据在3)中的结果在元数据系统中生成创建表。虽然以上描述了本发明的具体实施方式,但是熟悉本
技术领域
:的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。技术特征:技术总结本发明提供一种文件数据表结构的自动生成的方法,若文件类型为文本类型,则根据分隔符类型对文件每行数据解析成列,得到列数,并提取每列的内容;若文件类型为非文本类型文件,则通过函数UDF对文件字节流进行解析,得到每行数据以及每行列数;将每个列进行命名,并根据该列的值区分字段类型;根据每行的内容、列名以及字段类型生成对应的表;本发明还提供一种计算机设备,使得人工介入较少,效率高。技术研发人员:李昭阳受保护的技术使用者:福建星瑞格软件有限公司技术研发日:2018.02.06技术公布日:2018.08.28
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1