发明内容
本发明实施例提供一种转换数据的方法及装置,用于解决现有技术中待印刷的源文件的数据格式不统一的问题。
本发明实施例提供一种转换数据的方法,该方法包括:
获取待印刷的源文件以及所述源文件的描述信息;
根据所述描述信息确定所述源文件所包含的字段以及所述字段的属性;
从所述源文件所包含的字段中选取目标文件所包含的字段,根据所述目标文件所包含的字段的属性从所述源文件中读取所述字段对应的字段内容;
按照所述目标文件的数据格式将读取到的字段内容写入所述目标文件。
本发明实施例提供一种数据转换装置,该装置包括:
获取单元,用于获取源文件以及所述源文件的描述信息;
确定单元,用于根据所述描述信息确定所述源文件所包含的字段以及所述字段的属性;
读取单元,用于从所述源文件所包含的字段中选取目标文件所包含的字段,根据所述目标文件所包含的字段的属性从所述源文件中读取所述字段对应的字段内容;
写入单元,用于按照所述目标文件的数据格式将读取到的字段内容写入所述目标文件。
本发明实施例提供的方案中,通过获取源文件的描述信息,根据该描述信息确定源文件所包含的字段以及包含字段的属性,并根据字段的属性从源文件中读取对应的字段内容,最终按照目标文件的数据格式将读取到的字段内容写入目标文件,从而实现了将待印刷的不同源文件转化为具有统一数据格式的文件的目的。
具体实施方式
为了使得待印刷的多个源文件具有统一的数据格式,本发明实施例提供一种转换数据的方法,本方法中,根据用户提供的源文件的描述信息确定源文件所包含的字段以及字段的属性,然后根据字段的属性从源文件中读取该字段对应的字段内容,并按照目标文件的数据格式将读取到的字段内容写入目标文件中。
参见图1,本发明实施例提供的转换数据的方法,具体包括如下步骤:
步骤10:获取待印刷的源文件以及该源文件的描述信息;
步骤11:根据获取到的源文件的描述信息确定源文件所包含的字段以及所包含字段的属性;
步骤12:从源文件所包含的字段中选取目标文件所包含的字段,根据选取的字段的属性从源文件中读取该字段对应的字段内容;
步骤13:按照目标文件的数据格式将读取到的字段内容写入目标文件。
步骤10中,源文件的描述信息中可以包含源文件的显示方式等、编码方式、源文件所包含字段的信息以及所包含字段在源文件中的位置关系信息等。对于采用固定分隔符格式的源文件,描述信息中还可以包含固定分隔符等数据格式的属性信息;对于采用数据定长格式的源文件,描述信息中还可以包含字段长度等数据格式的属性信息;对于采用新数据库表格式的源文件,描述信息中还可以包含数据库表中字段的数据类型等数据格式的属性信息。
步骤11中,根据源文件的描述信息确定源文件所包含的字段以及所包含字段的属性的具体方法为:
首先,从源文件的描述信息中读取源文件所包含字段的标识信息,根据读取到的标识信息确定源文件所包含的字段,例如,标识信息包含了姓名、卡号、交易金额,则可确定源文件中包含姓名、卡号和交易金额三个字段;
然后,从源文件的描述信息中读取源文件所采用的数据格式的属性信息,以及源文件所包含字段的位置关系信息,将数据格式的属性信息和所包含字段的位置关系信息确定为源文件所包含字段的属性信息。这里,对于采用固定分隔符格式的源文件,数据格式的属性信息主要指固定分隔符,还可以包括记录分隔符、换行符等。对于采用数据定长格式的源文件,数据格式的属性信息主要指字段长度,还可以包括记录分隔符、换行符等。对于采用数据库表格式的源文件,数据格式的属性信息主要指数据库表的属性信息,例如数据库表中的数据类型、行列组织方式等信息。
步骤12中,目标文件可能包含源文件的所有字段,还可能包含源文件的部分字段,目标文件包含哪些字段以及目标文件的数据格式可以根据印刷的输出需要进行设置。在从源文件所包含的字段中选取目标文件所包含的字段后,可以根据选取的字段的属性从源文件中读取该字段对应的字段内容,例如,源文件采用数据库表格式,源文件包括姓名、卡号和交易金额三个字段,其中获取到的姓名字段的属性信息包括:该字段在数据表中的第一列,数据库表中的数据为定点整数类型;卡号字段的属性信息包括:该字段在数据表中的第二列,数据库表中的数据为定点整数类型;交易金额的属性信息包括:该字段在数据表中的第三列,数据库表中的数据为定点整数类型。那么,在根据字段的属性从源文件中读取字段内容时,从数据库表中的每一行的第一列读取定长的数据作为姓名内容,从数据库表中的每一行的第二列读取定长的数据作为卡号内容,从数据库表中的每三行的第三列读取定长的数据作为交易金额内容。
为了能够更清楚容易的确定源文件所包含的字段,可以将源文件所包含的字段以树型结构进行保存和展现,为此在步骤11和步骤12之间,增加如下步骤:
步骤110:创建树型结构数据的根节点,在该根节点下创建子节点,该子节点为源文件的标识;在根节点的子节点下创建子节点,创建的子节点为源文件所包含的字段;并记录各字段的属性信息。
在某些情况下,字段由多个子字段组成,为了将子字段作为节点添加到树型结构数据中,在根节点的子节点下创建子节点后,根据源文件的描述信息确定树型结构数据中子节点对应的字段是否包含子字段,若是,则在所述子节点下创建子节点,创建的子节点为所述字段包含的子字段;并从源文件的描述信息中读取该子字段的属性信息,并记录该属性信息。
将创建的树型结构数据展现给用户后,用户可以通过修改树型数据结构中的节点来修改字段名称,以使树型数据结构中的字段名称与目标文件中的字段名称一致,为将数据准确写入目标文件提供保证。例如,树型数据结构中的某个字段名称为“卡号”,目标文件中有字段“账号”,用户得知“卡号”和“账号”的含义相同,于是将树型数据结构中字段为“卡号”的子节点修改为“账号”,在写入目标文件时则可以将源文件中“卡号”对应的内容写入目标文件中“账号”对应的位置处。如果不将树型数据结构中的子节点“卡号”修改为“账号”,那么在写入目标文件时由于在目标文件中找不到字段“卡号”,从而无法将源文件中“卡号”对应的内容写入目标文件中,造成写入错误。
用户还可以通过删除树型数据结构中的节点来删除不需要输出的字段,从而节省数据存储资源。例如,目标文件中有字段“姓名”和“账号”,树型数据结构中有字段“姓名”、“账号”和“交易金额”,由于不需要将“交易金额”字段的内容写入目标文件,因此可以将树型数据结构中的子节点“交易金额”删除,以节省数据存储资源。
步骤12中从源文件所包含的字段中选取目标文件所包含的字段具体方法为:从树型结构数据所包含的子节点中选取目标文件所包含的字段。
下面以具体实例对本发明方法进行说明:
本实例中,用户提交的待印刷的源文件有源文件1和源文件2,其中源文件1采用数据定长格式,包括“姓名”和“卡号”两个字段,源文件2采用固定分隔符格式,包括“卡号”和“交易金额”两个字段。如图2A所示,为源文件1的字段内容示意图,如图2B所示,为源文件2的字段内容示意图。目标文件包括“姓名”、“卡号”和“交易金额”三个字段,如图2C所示。将源文件1和源文件2转换到目标文件的具体流程如下:
步骤S01:从用户提供的源文件1的说明文件中读取对源文件1的描述信息,描述信息包括:源文件1的记录分割符(记录分割符为“CH0000”)、源文件1所包含的字段名称(“姓名”和“卡号”)、源文件1中的字段长度信息(6字节)、字段“姓名”和“卡号”的位置关系(字段“姓名”在记录分隔符之后,字段“卡号”在字段“姓名”之后);
从用户提供的源文件2的说明文件中读取对源文件2的描述信息,描述信息包括:源文件2的记录分割符(记录分割符为“FH0000”)、源文件2所包含的字段名称(“卡号”和“交易金额”)、源文件2采用的固定分隔符(——)、字段“卡号”和“交易金额”的位置关系(字段“卡号”在记录分隔符之后,字段“交易金额”在字段“卡号”之后)。
步骤S02:根据读取到的描述信息建立树型结构数据:
创建根节点,将源文件1和源文件2作为子节点添加在根节点下;在节点“源文件1”下添加“姓名”和“卡号”两个子节点,并记录子节点“姓名”的属性信息,包括字段长度、记录分隔符和位置信息(在记录分隔符之后),以及子节点“卡号”的位置信息(在字段“姓名”之后)。
在节点“源文件2”下添加“卡号”和“交易金额”两个子节点,并记录子节点“卡号”的属性信息,包括固定分隔符、记录分隔符和位置信息(在记录分隔符之后),以及子节点“交易金额”的位置信息(在字段“卡号”之后)。创建的树型结构数据如图2D所示。
步骤S03:目标文件中包含了树型结构数据中的所有字段,根据记录的源文件1下的字段“姓名”和“卡号”的属性信息,从源文件1的记录中读取字段“姓名”和“卡号”对应的字段内容,并写入目标文件;根据记录的源文件2下的字段“卡号”和“交易金额”的属性信息,从源文件2的记录中读取字段“卡号”和“交易金额”对应的字段内容,并写入目标文件,由于源文件1和源文件2均包含字段“卡号”,在写入时,将卡号相同的记录在目标文件中合并为一条记录,如图2E所示,为写入后的目标文件,转换流程结束。
参见图3,本发明实施例还提供一种数据转换装置,该装置包括获取单元30、确定单元31、读取单元32和写入单元33,其中:
获取单元30,用于获取源文件以及所述源文件的描述信息;
确定单元31,用于根据所述描述信息确定所述源文件所包含的字段以及所述字段的属性;
读取单元32,用于从所述源文件所包含的字段中选取目标文件所包含的字段,根据所述目标文件所包含的字段的属性从所述源文件中读取所述字段对应的字段内容;
写入单元33,用于按照所述目标文件的数据格式将读取到的字段内容写入所述目标文件。
确定单元31包括字段确定单元和属性确定单元,其中:
字段确定单元,用于从所述源文件的描述信息中读取所述源文件所包含字段的标识信息,根据读取到的标识信息确定所述源文件所包含的字段;
属性确定单元,用于从所述源文件的描述信息中读取所述源文件所采用的数据格式的属性信息,以及所述源文件所包含字段的位置关系信息,将所述数据格式的属性信息和所述位置关系信息确定为所述源文件所包含字段的属性信息。对于采用固定分隔符格式的源文件,数据格式的属性信息包括固定分隔符信息等。对于采用数据定长格式的源文件,数据格式的属性信息包括字段长度信息等。对于采用数据库表格式的源文件,数据格式的属性信息包括数据库表的属性信息等。
该装置进一步包括:
树型数据创建单元34,用于创建树型结构数据的根节点,在所述根节点下创建子节点,该子节点为所述源文件的标识;在所述根节点的子节点下创建子节点,创建的子节点为所述源文件所包含的字段,并记录所述字段的属性信息。
该装置进一步包括:
递归单元35,用于在所述根节点的子节点下创建子节点后,根据所述源文件的描述信息确定所述树型结构数据中子节点对应的字段是否包含子字段,若是,则在所述子节点下创建子节点,创建的子节点为所述子字段;并从所述源文件的描述信息中读取所述子字段的属性信息,记录所述属性信息。
读取单元32用于:
从所述树型数据创建单元创建的树型结构数据所包含的子节点中选取目标文件所包含的字段。