一种数据导入方法及设备与流程

文档序号:16248709发布日期:2018-12-11 23:49阅读:166来源:国知局
本申请涉及计算机领域,尤其涉及一种数据导入方法及设备。
背景技术
:运用计算机进行数据处理时系统工程和自动控制的基本环节。这种数据处理方式贯穿于社会生产和社会生活的各个领域,其发展及应用极大地影响着人类社会发展的进程。运用计算机处理数据的过程中,导入数据是一个必不可少的环节现有的传统数据导入过程中,往往只针对特定规则的文件,进行人为手动进行导入,导致传统数据导入过程效率低下,鲁棒性低。技术实现要素:本申请的一个目的是提供一种数据导入方法及设备,以解决现有技术中数据导入的效率低和鲁棒性低的问题。根据本申请的一个方面,提供了一种数据导入方法,该方法包括:扫描并确定待导入数据及其所属平台相关信息;根据所述平台相关信息确定数据导入时对应的转换规则;根据所述转换规则将所述待导入数据写入至目标存储表。进一步地,上述数据导入方法中,所述扫描并确定待导入数据及其所属平台相关信息,包括:启动扫描线程,通过所述扫描线程实时/定时扫描至少一个目标目录下的文件,其中,每个所述目标目录下的文件用于指示存储的对应平台提供的原始数据;当在所述目标目录下扫描到预设数据类型的文件时,确定待导入数据及其所属平台相关信息。进一步地,上述数据导入方法中,所述启动扫描线程,通过所述扫描线程实时/定时扫描至少一个目标目录下的文件之前,还包括:判断所述目标目录下是否存在执行中的任务,若不存在,则启动扫描线程;若存在,则待所述执行中的任务执行完毕后进行启动扫描线程。进一步地,上述数据导入方法中,所述当在所述目标目录下扫描到预设数据类型的文件时,确定待导入数据及其所属平台相关信息,包括:当在所述目标目录下扫描到预设数据类型对应的文件时,将所述目标目录下的、与所述预设数据类型对应的文件确定为所述待导入数据,并确定所述待导入数据所属平台相关信息。进一步地,上述数据导入方法中,所述根据所述转换规则将所述待导入数据写入至目标存储表之前,还包括:基于所述待导入数据及其所属平台相关信息,建立数据导入任务,同时将所述数据导入任务设置为待导入状态;以消息的形式将所述数据导入任务插入至导入消息队列中,以触发所述数据导入任务,其中,所述数据导入任务包括所述待导入数据。进一步地,上述数据导入方法中,所述根据所述转换规则将所述待导入数据写入至目标存储表,包括:启动导入线程,通过所述导入线程执行所述数据导入任务;根据所述转换规则将所述待导入数据写入至所述目标存储表。进一步地,上述数据导入方法中,所述根据所述转换规则将所述待导入数据写入至目标存储表,包括:启动导入线程,通过所述导入线程从所述消息队列中查找出与所述数据导入任务对应的消息,并将所述消息对应的所述数据导入任务更新为执行状态;加载数据导入时对应的所述转换规则;根据所述转换规则将所述待导入数据写入至所述目标存储表。进一步地,上述数据导入方法中,所述转换规则包括文件校验规则和数据映射规则,其中,所述根据所述转换规则将所述待导入数据写入至所述目标存储表,包括:基于所述文件校验规则对所述目标目录下的、与所述预设数据类型对应的文件进行文件校验,并设置所述文件的状态为准备状态;基于获取所述文件的参数信息对所述数据映射规则进行内容校验;当所述文件校验和内容校验均通过时,则根据所述数据映射规则将所述待导入数据写入至所述目标存储表。进一步地,上述数据导入方法中,所述根据所述数据映射规则将所述待导入数据写入至所述目标存储表,还包括:根据所述数据映射规则将所述待导入数据及其所对应的关联信息写入至所述目标存储表。进一步地,上述数据导入方法中,若所述待导入数据为压缩包,所述根据所述转换规则将所述待导入数据写入至目标存储表还包括:将以压缩包形式存在的待导入数据进行解压缩处理;根据所述转换规则将解压缩后得到的待导入数据写入至目标存储表;在写入完成后,将所述解压缩后得到的待导入数据删除,并将写入完成后的数据进行备份。进一步地,上述数据导入方法中,所述方法还包括:创建用于数据导入的扫描线程和至少一个导入线程及用于监听所述扫描线程和导入线程的一监听线程;通过所述监听线程,得到用于实时监听数据导入的监听日志;其中,所述扫描线程、导入线程及监听线程之间相互独立。根据本申请的另一方面,还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述的数据导入方法。根据本申请的另一方面,还提供了一种数据导入设备,其中,所述设备包括:一个或多个处理器;非易失性存储介质,用于存储一个或多个计算机可读指令,当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的数据导入方法。与现有技术相比,本申请通过首先扫描并确定待导入数据及其所属平台相关信息;根据所述平台相关信息确定数据导入时对应的转换规则;最后,根据所述转换规则将所述待导入数据写入至目标存储表,实现通过转换规则将确定的待导入数据的自动导入至目标存储表,不仅避免了现有数据导入过程中的人为导入的效率低的问题,还提高了数据导入效率,同时不同的待导入数据对应不同的转换规则,从而可以提高数据导入的鲁棒性。进一步地,本申请还创建用于数据导入的扫描线程和至少一个导入线程及用于监听所述扫描线程和导入线程的一监听线程,其中,所述扫描线程、导入线程及监听线程之间相互独立,以通过所述监听线程,得到用于实时监听数据导入的监听日志,不仅可以实现对数据导入过程的实时状况的监听,还可以通过该监听日志实时记录数据导入的不同时期,以便在后续数据导入出错时能够通过该监听日志准确地定位出错处,进而加快解决数据导入过程中的出错。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种数据导入方法的流程示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。图1示出根据本申请一个方面的一种数据导入方法,用于在多平台数据对接过程中的、将从多个平台获取的为了实现数据对接的数据导入至统一的数据库的数据导入过程中,该方法包括步骤s11、步骤s12和步骤s13,其中,所述步骤s11,扫描并确定待导入数据及其所属平台相关信息;在此,所述平台相关信息包括平台名称、平台类型及平台版本等信息;其中,所述平台类型可以是包括但不限于包括是oracleebs平台、sap、金蝶及用友等erp系统。所述步骤s12,根据所述平台相关信息确定数据导入时对应的转换规则;所述步骤s13,根据所述转换规则将所述待导入数据写入至目标存储表。通过上述步骤s11至步骤s13实现了通过转换规则将确定的待导入数据的自动导入至目标存储表,不仅避免了现有数据导入过程中的人为导入的效率低的问题,还提高了数据导入效率,同时不同的待导入数据对应不同的转换规则,从而可以提高数据导入的鲁棒性。在本申请的实施例中,所述步骤s11扫描并确定待导入数据及其所属平台相关信息,包括:启动扫描线程,通过所述扫描线程实时/定时扫描至少一个目标目录下的文件,其中,每个所述目标目录下的文件用于指示存储的对应平台提供的原始数据;在此,每个平台类型在进行数据对接的过程中存在其对应的对接接口,则在目标目录下:相同的数据对接时的对接接口对应一个文件,该文件下存在从个平台通过对接接口获取的原始数据;当需要对目标目录下的文件中的数据进行数据导入时,则需要启动扫描线程,用于随时执行启动的实时/定时的扫描任务,以从一个或多个目标目录下的文件中扫描到需要进行数据导入的文件,当在所述目标目录下扫描到预设数据类型的文件时,确定待导入数据及其所属平台相关信息,通过扫描线程确定需要进行数据导入时对应的待导入数据及其所属平台相关信息。在此,该预设数据类型可以是包括但不限于是包括用于指示从多平台中获取的原始数据的状态(例如获取成功时,文件后缀为.ok;获取失败时,文件后缀为.error等),以及用于指示从多平台中获取的原始数据是否出错或遗漏等,通过该预设数据类型,可以从目标目录下扫描到数据获取成功时对应的文件,则可以将数据获取成功的文件确定为待导入数据,以确保后续进行数据导入时的正确性,避免扫描到获取失败或出错的数据导致后续数据导入引入连环错误。由于正在扫描的目标目录下存在执行中的任务时,若扫描该目标目录下的文件时,可能执行中的任务会对该目标目录下的文件进行更新、修改等操作,导致扫描到的目标目录下的文件存在误差,或若该执行中的任务在第一次扫描时在执行,并在第二次进行目标目录下的文件扫描时,若该执行中的任务仍在执行中,则该目标目录下的文件存在被重复扫描的情况,导致发生冲突,为了避免上述误差和冲突,在本申请一实施例中,所述步骤s11中启动扫描线程,通过所述扫描线程实时/定时扫描至少一个目标目录下的文件之前,还包括:判断所述目标目录下是否存在执行中的任务,若不存在任何执行中的任务时,则启动扫描线程以进行扫描目标目录下的所有文件;若存在,则待所述执行中的任务执行完毕后,使得该目标目录下不存在正在执行中的任务时再进行启动扫描线程,避免了对目标目录下的文件进行扫描时可能出现的误差和冲突。下面以代码的形式来进一步解释实时步骤s11中的当确认扫描的目标目录下不存在任何执行中的任务时才启动扫描线程进行实时/定时扫描目标目录下的文件:selectdpc.value1,dci.source_sys_keyfromdc_custom_infodci,dc_param_configsdpcwheredci.enable_flag='y'anddpc.enabled_flag='y'anddci.source_sys_key=dpc.source_keyanddpc.code='inbound'anddpc.value1isnotnullanddpc.value1<>”anddci.source_sys_keynotin(selectdptq.source_sys_keyfromdc_process_task_queuedptqwheredptq.task_type_code='all2dc'anddptq.enabled_flag='y'anddptq.source_sys_key=dci.source_sys_keyanddptq.status_codein('running','error','pending')当然,在所述步骤s11中通过扫描线程对至少一个目标目录下的所有文件进行扫描并确定待导入数据时,是对该至少一个的目标目录进行并发扫描,实现同时扫描所有的目标目录下的文件,以便快速地扫描到并确定待导入数据,加快数据导入的进度,从而提高数据导入效率。在本实施例中,所述步骤s11中的当在所述目标目录下扫描到预设数据类型的文件时,确定待导入数据及其所属平台相关信息,包括:当在所述目标目录下扫描到预设数据类型对应的文件时,将所述目标目录下的、与所述预设数据类型对应的文件确定为所述待导入数据,并确定所述待导入数据所属平台相关信息。例如,在目标目录下的文件的数据类型可以有成功从平台处获取成功的原始数据对应的文件,也可以有从平台处获取原始数据出现遗漏或错误时对应的文件,故为了准确地获取到用于后续进行数据导入的有效数据,则在目标目录下进行所有文件的扫描时,若扫描到目标目录下存在的预设数据类型对应的文件时,则将该目标目录下的、与该预设数据类型对应的文件确定为待导入数据(例如,将目标目录下的所有存储文件的后缀为.ok的文件均确定为待导入数据,后缀为.error等出现遗漏或错误的文件则不被确定为待导入数据),并根据该目标目录下的、与该预设数据类型对应的文件被提供的所属平台相关信息,以便后续能够根据该文件对应所属平台相关信息确定用于数据导入时的转换规则,进而实现对目标目录下的文件的准确有效导入。本申请一实施例中,所述步骤s13根据所述转换规则将所述待导入数据写入至目标存储表之前,还包括:基于所述待导入数据及其所属平台相关信息,建立数据导入任务,同时将所述数据导入任务设置为待导入状态;以消息的形式将所述数据导入任务插入至导入消息队列中,以触发所述数据导入任务,其中,所述数据导入任务包括所述待导入数据。例如,根据确定的待导入数据及其所属平台相关信息(例如平台名称、平台类型及平台版本等)建立该待导入数据对应的数据导入任务,同时,将该数据导入任务设置为待导入状态pending,接着以消息的形式将该数据导入任务插入至消息队列中,使得该数据导入任务以消息的形式插入至消息队列中,进而可以通过检测到消息队列中存在消息时,触发该数据导入任务,从而进入对待导入数据的数据导入阶段。下面以代码的形式进一步解释实时步骤s13中的当在所述目标目录下扫描到预设数据类型对应的文件时,将所述目标目录下的、与所述预设数据类型对应的文件确定为所述待导入数据,并建立数据导入任务,同时将所述数据导入任务设置为待导入状态pending:下面以代码的形式进一步解释实时步骤s13中的在基于待导入数据创建数据导入任务完毕后,将该数据导入任务以消息的形式插入至导入消息队列中:rabbitcontentrabbitcontent=newrabbitcontent();map<string,object>msgcotent=newhashmap<string,object>();;msgcotent.put(“sourcesyskey”,task.getsyskey());msgcotent.put(“taskqueueid”,task.gettaskqueueid());msgcotent.put(“processgroupid”,task.getprocessid());msgcotent.put(“processnode”,-1);rabbitcontent.setmsgcotent(msgcotent);rabbitcontent.setexchange(globalinfo.topic_dataimp_exchange_base);rabbitcontent.setroutingkey(globalinfo.topic_dataimp_quota);rabbit.sendtopicmessage(rabbitcontent);log.info(“sendmqtoowner,发送到owner的mq为:”+task.tostring());本申请一实施例中,所述步骤s13根据所述转换规则将所述待导入数据写入至目标存储表,包括:启动导入线程,通过所述导入线程执行所述数据导入任务;根据所述转换规则将所述待导入数据写入至所述目标存储表。在此,所述导入线程与扫描线程是相互独立的,其中,该扫描线程是实时/定时对所有的目标目录下的文件进行实时/定时扫描,该扫描线程处于实时或定时启动的状态,而该导入线程则是在实时接收消息队列中的消息的过程中,当消息队列中存在消息时,才会立刻启动导入线程,通过该导入线程从所述消息队列中查找出与所述数据导入任务对应的消息,并将所述消息对应的所述数据导入任务更新为执行状态running;并根据该待导入数据所属平台相关信息确定的转换规则将该待导入数据写入至目标存储标表中,实现对待导入数据的导入。下面以代码的形式进一步解释所述步骤s13中的通过所述导入线程从所述消息队列中查找出与所述数据导入任务对应的消息,并将所述消息对应的所述数据导入任务更新为执行状态:接着本实施例,加载该待导入数据在其所属平台的该目标目录的参数信息等,该参数信息主要包括加载该待导入数据在数据导入时对应的转换规则,其中,该转换规则可以用于对该目标目录下的文件的文件名进行文件校验的文件校验规则和用于对待导入数据进行内容映射的数据映射规则等,在加载完待导入数据进行数据导入时的转换规则后,根据所述转换规则将所述待导入数据写入至所述目标存储表,实现对待导入数据的导入。进一步地,下面以代码的形式对该加载数据导入时对应的转换规则进行说明:接着本实施例,所述步骤s13中的根据所述转换规则将所述待导入数据写入至所述目标存储表,包括:再次扫描该数据导入任务所对应的目标目录,基于该文件校验规则对所述目标目录下的、与所述预设数据类型对应的文件进行文件校验,对于与该文件校验规则匹配上的文件,设置该文件的状态为准备状态,即准备将该文件对应的待导入数据进入数据导入的准备状态;记着根据文件所需要映射至的目标存储表的映射规则的不同,将待导入数据对应的文件进行分组,以便采取分组并发的方式同时进行数据导入的工作。接着,加载出对应组别所对应的数据映射规则的详细规则信息,并根据该数据映射规则的详细规则信息生成插入语句,例如:selectdistinctditd.file_column_sequence,ditd.file_column_name,ditd.file_column_type,ditd.file_column_default_value,ditd.table_column_name,ditd.table_column_default_value,ditd.org_type,ditd.table_column_sequencefromdc_interface_table_masterditm,dc_interface_table_detailsditdwhereditm.id=ditd.interface_table_idandditm.interface_code=?orderbyditd.table_column_sequence;接着,基于获取所述文件的参数信息(例如文件的存储时间等字符串)对所述数据映射规则进行内容校验,以保证该数据映射规则的准确性;当所述文件校验和内容校验均通过时,则根据所述数据映射规则将所述待导入数据写入至所述目标存储表。本实施例中,若所述待导入数据为压缩包,所述步骤s13根据所述数据映射规则将所述待导入数据写入至所述目标存储表还包括:将以压缩包形式存在的待导入数据进行解压缩处理;根据所述转换规则将解压缩后得到的待导入数据写入至目标存储表;等所述待导入数据对应的所有文件均被写入完成后,将所述解压缩后得到的待导入数据(解压文件)删除,并将写入完成后的数据(导入成功的文件)进行备份,并存储在备用文件夹中,不仅将已经导入成功的待导入数据进行删除,节省了内存资源,还将导入成功的数据进行备份以保证导入完成后的数据的有效存储。进一步地,所述步骤s13中的根据所述数据映射规则将所述待导入数据写入至所述目标存储表,还包括:根据所述数据映射规则将所述待导入数据及其所对应的关联信息写入至所述目标存储表。其中,所述关联信息包括该待导入数据的所属平台、与该待导入数据存在数据交互的一个或多个平台以及该待导入数据的应用场景等与该待导入数据对应的组织及组织关系。下面以代码的形式进一步对所述步骤s13中的将所述待导入数据所对应的关联信息写入至所述目标存储表进行解释:通过上述步骤s13对待导入数据及其关联信息的导入成功且没有出错时,会建立清洗任务并启动,以实现对待导入数据的导入和清洗。本申请一实施例中的数据导入方法还包括:创建用于数据导入的扫描线程和至少一个导入线程及用于监听所述扫描线程和导入线程的一监听线程,其中,所述扫描线程、导入线程及监听线程之间相互独立,以通过所述监听线程,得到用于实时监听数据导入的监听日志,不仅可以实现对数据导入过程的实时状况的监听,还可以通过该监听日志实时记录数据导入的不同时期,以便在后续数据导入出错时能够通过该监听日志准确地定位出错处,进而加快解决数据导入过程中的出错。此外,本申请另一实施例还提供了一种非易失性存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行时,使所述处理器实现如上述数据导入方法。此外,本申请另一实施例还提供了一种数据导入设备,其中,所述设备包括:一个或多个处理器;非易失性存储介质,用于存储一个或多个计算机可读指令,当所述一个或多个计算机可读指令被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述数据导入法。在此,所述用于数据导入的设备中的各实施例的详细内容,具体可参见该用于数据导入方法实施例的对应部分,在此,不再赘述。综上所述,本申请通过首先扫描并确定待导入数据及其所属平台相关信息;根据所述平台相关信息确定数据导入时对应的转换规则;最后,根据所述转换规则将所述待导入数据写入至目标存储表,实现通过转换规则将确定的待导入数据的自动导入至目标存储表,不仅避免了现有数据导入过程中的人为导入的效率低的问题,还提高了数据导入效率,同时不同的待导入数据对应不同的转换规则,从而可以提高数据导入的鲁棒性。进一步地,本申请还创建用于数据导入的扫描线程和至少一个导入线程及用于监听所述扫描线程和导入线程的一监听线程,其中,所述扫描线程、导入线程及监听线程之间相互独立,以通过所述监听线程,得到用于实时监听数据导入的监听日志,不仅可以实现对数据导入过程的实时状况的监听,还可以通过该监听日志实时记录数据导入的不同时期,以便在后续数据导入出错时能够通过该监听日志准确地定位出错处,进而加快解决数据导入过程中的出错。需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1