CN101996067B - 一种数据导出的方法和装置 - Google Patents

一种数据导出的方法和装置 Download PDF

Info

Publication number
CN101996067B
CN101996067B CN200910166485.0A CN200910166485A CN101996067B CN 101996067 B CN101996067 B CN 101996067B CN 200910166485 A CN200910166485 A CN 200910166485A CN 101996067 B CN101996067 B CN 101996067B
Authority
CN
China
Prior art keywords
derivation
data
thread
exported
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200910166485.0A
Other languages
English (en)
Other versions
CN101996067A (zh
Inventor
奎跃翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taobao China Software Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN200910166485.0A priority Critical patent/CN101996067B/zh
Publication of CN101996067A publication Critical patent/CN101996067A/zh
Priority to HK11103957.2A priority patent/HK1149962A1/zh
Application granted granted Critical
Publication of CN101996067B publication Critical patent/CN101996067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了数据导出的方法和装置,所述方法包括:接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;根据所述导出条件、最大线程数和单次记录数生成导出任务;依据所述导出任务对所述待导出数据进行导出。与现有技术不同的是,在本申请实施例中,所述方法及装置避免了在大数据量情况下,单线程操作的响应时间过长的问题,提高了大数据量的导出效率。

Description

一种数据导出的方法和装置
技术领域
本申请涉及软件测试领域,特别涉及一种数据导出的方法和装置。
背景技术
在企业级应用系统中,经常需要将数据库中保存的部分或全部原始数据进行导出,即是转换为其他格式的数据文件,以便于后续的阅读或修改。
现有技术中,有一种单线程导出数据的方法,当接收到用户的一个导出操作请求时,需要根据该导出操作请求从数据库中查询相应的数据,然后再将查询到的数据写入到文本文件中,并将该文本文件转换为目标格式的文件,转换时可以采用修改文件扩展名等方式。
但是,该方法存在的缺点,一个导出操作请求仅由一个线程单独响应完成,当需要导出的数据量较大时,因为每次只能启动一个线程进行导出,就会使得从数据库中查询数据的过程非常慢,同时将数据写入到文本文件的响应时间也过长,这就降低了数据导出效率。
总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种数据导出的方法,以解决现有技术中在需要导出大数据量的情况下,导致的数据导出效率较低的问题。
发明内容
本申请所要解决的技术问题是提供一种数据导出的方法,用以解决现有技术中在需要导出大数据量的情况下,导致的数据导出效率较低的问题。
本申请还提供了一种数据导出的装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种数据导出的方法,包括:
接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
根据所述导出条件、最大线程数和单次记录数生成导出任务;
依据所述导出任务对所述待导出数据进行导出。
优选的,所述导出配置信息还包括缓存失效时间;
则所述方法还包括:
根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
比较所述第一记录数与上一次相同导出条件下保存的第二记录数;
当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内;
如果否,则执行所述根据所述导出条件、最大线程数和单次记录数生成导出任务的步骤。
优选的,所述依据所述导出任务对所述待导出数据进行导出之后,还包括:
保存本次导出时的导出条件和记录总数。
优选的,所述根据所述导出条件、最大线程数和单次记录数生成导出任务,具体包括:
根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
按照所述数据区间启动所述创建的每一个线程。
优选的,所述依据所述导出任务对所述待导出数据进行导出,具体包括:
获取每个线程的数据区间对应的待导出数据;
调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
优选的,所述依据所述导出任务和导出条件对所述待导出数据进行导出之后,还包括:
在同步模式下,直接将所述导出的结果文件返回至客户端。
本申请公开了一种数据导出的装置,包括:
接收模块,用于接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
生成模块,用于根据所述导出条件、最大线程数和单次记录数生成导出任务;
导出模块,用于依据所述导出任务对所述待导出数据进行导出。
优选的,所述装置还包括:
获取模块,用于从数据库中获取所述待导出数据的第一记录数;
比较模块,用于比较所述第一记录数与上一次相同导出条件下导出时的第二记录数;
判断模块,用于当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内;
执行模块,用于当所述判断模块的结果为否时,执行所述根据所述最大线程数和单次记录数生成导出任务的步骤。
优选的,还包括:
保存模块,用于保存本次导出时的导出条件和导出的记录总数。
优选的,所述生成模块具体包括:
第一获取子模块,用于从数据库中获取所述待导出数据的第一记录数;
计算子模块,用于根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
创建线程子模块,用于按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
启动线程子模块,用于按照所述数据区间启动所述创建的每一个线程。
优选的,所述导出模块具体包括:
第二获取子模块,用于获取每个线程的数据区间对应的待导出数据;
生成子模块,用于调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
优选的,还包括:
返回模块,用于在同步模式下,直接将所述导出的结果文件返回至客户端。
与现有技术相比,本申请包括以下优点:
在本申请实施例中,通过待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;可以由根据所述导出条件、最大线程数和单次记录数生成导出任务;依据所述导出任务对所述待导出数据进行导出。在本申请实施例中,所述最大线程数即为当前导出操作请求可以分配的线程个数,即是通过将当前导出操作分配至多个线程来完成,由此,避免了在大数据量情况下,单线程操作的响应时间过长的问题,提高了大数据量的导出效率。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一种数据导出的方法实施例1的流程图;
图2是本申请的一种数据导出的方法实施例2的流程图;
图3是本申请的一种数据导出的方法实施例3的流程图;
图4是本申请的一种数据导出的装置实施例1的结构框图;
图5是本申请的一种数据导出的装置实施例2的结构框图;
图6是本申请的一种数据导出的装置实施例3的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想包括,本申请实施例中采用多个线程来处理用户的每一个导出请求,即是通过接收到的导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数,并根据所述最大线程数和单次记录数,还有待导出数据的导出条件生成导出任务;最后依据所述导出任务对所述待导出数据进行导出。由于所述单个任务的最大线程数即是当前导出操作任务可以分配的最大线程个数,这样就可以通过最大线程数,以及每一个线程的单次记录数来生成导出任务,从而无需在大数据量的情况下,采用多线程导出的方式,就减少了导出操作请求的响应时间,从而提高了数据的导出效率。
参考图1,示出了本申请一种数据导出的方法实施例1的流程图,可以包括以下步骤:
步骤101:接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
在本实施例中,所述待导出数据的导出条件可以理解为导出结果文件的筛选条件,例如:数据库中存储有大量的客户数据,其中客户数据中包括客户所属地区及所属行业。若要导出某一地区A的某一行业B的客户数据,则A和B即为该导出操作的导出条件,所述客户数据则为待导出数据,所述待导出数据存放在数据库中;因为本申请实施例中采用多个线程来处理用户的一个导出请求,则所述导出配置信息可以包括:单个任务的最大线程数和每个线程的单次记录数;所述单个任务的最大线程数为用户的每一个导出请求可以分配的最大线程数目,所述每个线程的单次记录数为每一个线程能够处理的记录数目,所述记录是数据库的一个基本概念,在实际中一个记录就对应数据库中的一行原始数据;就前面例子而言,一个记录就是一个客户数据;例如,当最大线程数为80,单次记录数为10万时,表示用户的每个导出请求最多可以分配给80个线程来处理,每一个线程最多可以处理10万个记录;当待导出数据为客户数据,所述记录的总数即为客户的总数;
步骤102:根据所述导出条件、最大线程数和单次记录数生成导出任务;
在本步骤中,具体可以通过导出条件从数据库中获取到所述待导出数据的记录数,即是对所述待导出数据进行导出时的总记录数,在本申请实施例中称为第一记录数;其中,所述待导出数据的记录数和数据库中的数据区间一一对应,所述数据区间即是与记录数对应的数据库中的待处理数据;同时根据所述最大线程数可以为用户的该次导出请求创建相应个数的线程,再根据所述第一记录数和单次记录数为所述创建的线程分配记录数,所述第一记录数与所述单次记录数相除的商即是当前任务所需的线程个数;
例如,当查询到所述第一记录数为16万时,而每个线程的单次记录数为10万个,则需要创建两个线程,第一个线程处理10万个记录,第二个线程处理6万个记录;
步骤103:依据所述导出任务对所述待导出数据进行导出。
启动所述创建的每一个线程之后,根据所述记录数对应的数据区间,调用相应的目标格式文件组件将所述待导出数据生成目标格式的文件,例如,EXCEL文件。所述数据区间为在数据库中的具体是从哪一行到哪一行的一块区间数据,所述记录数是多少个,则在数据库中对应的数据区间就有多少行数据;其中,需要说明的是,每一个线程对应一个目标格式的文件,在步骤102中创建了多少个线程,则本步骤中对应生成多少个目标格式的文件,则需要根据前面的两个线程生成两个EXCEL文件。
在实际应用中,在同步模式下,可以直接将所述导出的结果文件返回至客户端,如果是异步模式下,则系统可以不返回该导出的结果文件给客户端,可以保存在文件系统中,用户在后续需要该导出结果文件时,可以通过结果管理组件提供的导出结果下载页面来从文件系统中查询结果文件。
在本实施例中,将用户发起的一次导出请求操作,通过多个线程来实现数据的导出,和现有技术中单线程处理导出请求操作相比,可以在待导出数据的数据量较大的时候,能够减少系统的响应时间,从而提高待导出数据的导出效率。
参考图2,示出了本申请一种数据导出的方法实施例2的流程图,可以包括以下步骤:
步骤201:接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数、缓存失效时间和每个线程的单次记录数;
在本实施例中,所述导出配置信息还可以包括缓存失效时间,所述缓存失效时间为预先设定的一个时间参数,例如,可以为60分钟,或12小时;所述缓存失效时间表示在该段时间内,可以认为在相同导出条件下的相邻两次导出操作的导出数据是相同的;即是如果相同导出条件下的相邻两次导出操作的导出数据尽管内容是一致的,但是如果两次间隔时间超出了所述缓存失效时间,则在实际中就认为这两次的导出数据并不是相同的;其中,所述缓存失效时间可以根据对于待导出数据的精度要求,或者数据库中待导出数据的读写特点进行设定;所述缓存失效时间越短则精度越高;例如,当数据库中“写”的操作较多,就可以将缓存失效时间适当调小一点,如果“写”的操作较少,一两天内都不会更新,则可以适当的将所述缓存失效时间适当的调大一点;具体缓存失效时间的设置可以根据统计数据库中相邻两次“写”操作的平均时间间隔设定,可以设置缓存失效时间小于相邻两次“写”操作的平均时间间隔。
所述单个任务的最大线程数、缓存失效时间和每个线程的单次记录数可以根据需要预先设定,当然还可以采用默认值,例如,所述最大线程数的默认值为80,所述单次记录数默认值为10万个,所述缓存失效时间的默认值为60分钟;
步骤202:根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
所述数据库中保存有待导出数据,根据导出条件可以查询到相应的待导出数据,所述数据库中还包括有导出该待导出数据的第一记录数;
步骤203:比较所述第一记录数与上一次相同导出条件下导出时的第二记录数;
获取到上一次相同的导出条件下导出时的第二记录数,该第二记录数为相同导出条件下与本次导出时间上最接近的一次导出操作时的记录总数;
步骤204:当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内,如果否,则进入步骤205,如果是,则直接获取上一次的导出结果文件;
当所述第一记录数与所述第二记录数相等时,则继续判断上一次进行导出操作时的导出时间,是否在所述缓存失效时间内,如果在该缓存失效时间内,则表示上一次导出时的数据与本次需要导出的待导出数据相同,则此时直接从文件系统中获取到上一次的导出结果文件,作为本次导出的导出结果文件即可;如果不在所述缓存失效时间内,则表示上一次导出时的数据与本次的待导出数据并不相同,则进入步骤205;
步骤205:根据所述导出任务、最大线程数和单次记录数生成导出任务;
步骤206:依据所述导出任务对所述待导出数据进行导出。
步骤207:保存本次导出时的导出条件和导出的记录总数。
在本实施例中,还需要将本次导出的导出条件和导出时的记录总数记录下来,以便于下一次导出时,能够根据保存的记录总数来判断是否需要直接返回已有的导出结果文件。其中,当第一记录数与第二记录数相等时,记录总数就与两者均相等;当所述第一记录数与第二记录数不相等时,所述记录总数与所述第一记录数相等。
本实施例与上一个实施例的不同之处在于,本实施例可以提前判断与本次导出操作相邻的导出操作是否与本次导出的导出条件相等,如果相同,则直接获取到已有的导出结果文件即可,如果不相等,则再进行待导出数据的导出操作,这样就能够在提高导出请求的响应速度的同时,还能够提高数据的导出效率。
参考图3,示出了本申请一种数据导出的方法实施例3的流程图,可以包括以下步骤:
步骤301:接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
步骤302:根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
步骤303:根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
将所述第一记录数与所述单次记录数相除,所得的商即为当前任务需要启动的线程个数;如果得到的商为小数,则向上取整数作为商;
步骤304:按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
按照步骤303中创建的线程个数和单次记录数为各个线程分配数据区间,例如,当第一个线程的记录数为10万个时,则该第一个线程的数据区间的起始位置为第1个记录对应的待导出数据在数据库中的位置,结束位置为第10万个记录对应的待导出数据在数据库中的位置;
步骤305:按照所述数据区间启动所述创建的每一个线程;
按照所述为每个线程分配的数据区间启动每一个线程,其中,所述线程的个数即为数据区间的块数,也即是将所有的待导出数据进行了分块,每一个线程负责其中一块待导出数据的导出操作;
步骤306:获取每个线程的数据区间对应的待导出数据;
根据数据区间从数据库中查询获得对应的待导出数据;
步骤307:调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
可以调用相应的目标格式文件组件,例如EXCEL组件,来将该若干个待导出数据生成对应个数的EXCEL格式的文件;
本实施例还可以包括:
步骤308:在同步模式下,直接将所述导出的结果文件返回至客户端。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
与上述本申请一种数据导出的方法实施例1所提供的方法相对应,参见图4,本申请还提供了一种数据导出的装置实施例1,在本实施例中,该装置可以包括:
接收模块401,用于接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
在本实施例中,所述待导出数据的导出条件可以理解为导出结果文件的筛选条件,例如:数据库中存储有大量的客户数据,其中客户数据中包括客户所属地区及所属行业。若要导出某一地区A的某一行业B的客户数据,则A和B即为该导出操作的导出条件,所述客户数据则为待导出数据,所述待导出数据存放在数据库中;因为本申请实施例中采用多个线程来处理用户的一个导出请求,则所述导出配置信息可以包括:单个任务的最大线程数和每个线程的单次记录数;所述单个任务的最大线程数为用户的每一个导出请求可以分配的最大线程数目,所述每个线程的单次记录数为每一个线程能够处理的记录数目,所述记录是数据库的一个基本概念,在实际中一个记录就对应数据库中的一行原始数据;就前面例子而言,一个记录就是一个客户数据;
生成模块402,用于根据所述导出条件、最大线程数和单次记录数生成导出任务;
具体的,所述生成模块502可以通过导出条件从数据库中获取到所述待导出数据的记录数,即是对所述待导出数据进行导出时的总记录数,在本申请实施例中称为第一记录数;其中,所述待导出数据的记录数和数据库中的数据区间一一对应,所述数据区间即是与记录数对应的数据库中的待处理数据;同时根据所述最大线程数可以为用户的该次导出请求创建相应个数的线程,再根据所述第一记录数和单次记录数为所述创建的线程分配记录数,所述第一记录数与所述单次记录数相除的商即是当前任务所需的线程个数;
导出模块403,用于依据所述导出任务对所述待导出数据进行导出。
启动所述创建的每一个线程之后,根据所述记录数对应的数据区间,调用相应的目标格式文件组件将所述待导出数据生成目标格式的文件,需要说明的是,每一个线程对应一个目标格式的文件。本实施例中,所述装置可以通过多个线程来实现数据的导出,和现有技术中单线程处理导出请求操作相比,可以在待导出数据的数据量较大的时候,能够减少系统的响应时间,从而提高待导出数据的导出效率。
与上述本申请一种数据导出的方法实施例2所提供的方法相对应,参见图5,本申请还提供了一种数据导出的装置的优选实施例2,在本实施例中,该装置具体可以包括:
接收模块501,用于接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数、缓存失效时间和每个线程的单次记录数;
在本实施例中,所述导出配置信息还可以包括缓存失效时间,所述缓存失效时间为预先设定的一个时间参数,例如,可以为60分钟,或12小时;所述缓存失效时间表示在该时间内,相同导出条件的相邻两次导出操作的待导出数据相同;其中,所述缓存失效时间可以根据对于待导出数据的精度要求,或者数据库中待导出数据的读写特点进行设定;所述缓存失效时间越短则精度越高;例如,当数据库中“写”的操作较多,就可以将缓存失效时间适当调小一点,如果“写”的操作较少,一两天内都不会更新,则可以适当的将所述缓存失效时间适当的调大一点;其中,所述导出配置信息在实际中还可以采用配置组件来实现。
所述单个任务的最大线程数、缓存失效时间和每个线程的单次记录数可以根据需要预先设定,当然还可以采用默认值,例如,所述最大线程数的默认值为80,所述单次记录数默认值为10万个,所述缓存失效时间的默认值为60分钟;
获取模块502,用于从数据库中获取所述待导出数据的第一记录数;
所述数据库中保存有待导出数据,根据导出条件可以查询到相应的待导出数据,所述数据库中还包括有导出该待导出数据的第一记录数;
比较模块503,用于比较所述第一记录数与上一次相同导出条件下导出时的第二记录数;
所述比较模块503获取到上一次相同的导出条件下导出时的第二记录数,该第二记录数为相同导出条件下与本次导出时间上最接近的一次导出操作时的记录总数;
判断模块504,用于当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内;
当所述第一记录数与所述第二记录数相等时,则继续判断上一次进行导出操作时的导出时间,是否在所述缓存失效时间内,如果在该缓存失效时间内,则表示上一次导出时的数据与本次需要导出的待导出数据相同,则此时直接从文件系统中获取到上一次的导出结果文件,作为本次导出的导出结果文件即可;如果不在所述缓存失效时间内,则表示上一次导出时的数据与本次的待导出数据并不相同;
其中,需要说明的是,在实际应用中,前述四个模块的功能可以通过缓存组件来实现;
执行模块505,用于当所述判断模块的结果为否时,执行所述根据所述最大线程数和单次记录数生成导出任务的步骤。
导出模块506,用于依据所述导出任务对所述待导出数据进行导出。
保存模块507,用于保存本次导出时的导出条件和导出的记录总数。
在本实施例中,还需要由保存模块607将本次导出的导出条件和导出时的记录总数记录下来,以便于下一次导出时,能够根据保存的记录总数来判断是否需要直接返回已有的导出结果文件。其中,当第一记录数与第二记录数相等时,记录总数就与两者均相等;当所述第一记录数与第二记录数不相等时,所述记录总数与所述第一记录数相等。
与上述本申请一种数据导出的方法实施例2所提供的方法相对应,参见图6,本申请还提供了一种数据导出的装置的优选实施例2,在本实施例中,该装置具体可以包括:
接收模块601,用于接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
第一获取子模块602,用于从数据库中获取所述待导出数据的第一记录数;
计算子模块603,用于根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
创建线程子模块604,用于按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
启动线程子模块605,用于按照所述数据区间启动所述创建的每一个线程。
第二获取子模块606,用于获取每个线程的数据区间对应的待导出数据;
生成子模块607,用于调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
返回模块608,用于在同步模式下,直接将所述导出的结果文件返回至客户端。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据导出的方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据导出的方法,其特征在于,该方法包括:
接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
根据所述导出条件、最大线程数和单次记录数生成导出任务;
依据所述导出任务对所述待导出数据进行导出;
其中,所述根据所述导出条件、最大线程数和单次记录数生成导出任务,具体包括:
根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
按照所述数据区间启动所述创建的每一个线程。
2.根据权利要求1所述的方法,其特征在于,所述导出配置信息还包括缓存失效时间;
则所述方法还包括:
根据所述导出条件从数据库中获取所述待导出数据的第一记录数;
比较所述第一记录数与上一次相同导出条件下保存的第二记录数;
当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内;
如果否,则执行所述根据所述导出条件、最大线程数和单次记录数生成导出任务的步骤。
3.根据权利要求2所述的方法,其特征在于,所述依据所述导出任务对所述待导出数据进行导出之后,还包括:
保存本次导出时的导出条件和记录总数。
4.根据权利要求1所述的方法,其特征在于,所述依据所述导出任务对所述待导出数据进行导出,具体包括:
获取每个线程的数据区间对应的待导出数据;
调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
5.根据权利要求1所述的方法,其特征在于,所述依据所述导出任务对所述待导出数据进行导出之后,还包括:
在同步模式下,直接将所述导出的结果文件返回至客户端。
6.一种数据导出的装置,其特征在于,该装置包括:
接收模块,用于接收待导出数据的导出条件和导出配置信息,所述导出配置信息包括单个任务的最大线程数,和,每个线程的单次记录数;
生成模块,用于根据所述导出条件、最大线程数和单次记录数生成导出任务;
导出模块,用于依据所述导出任务对所述待导出数据进行导出;
其中,所述生成模块具体包括:
第一获取子模块,用于从数据库中获取所述待导出数据的第一记录数;
计算子模块,用于根据所述单次记录数和所述第一记录数,计算当前任务的线程个数;
创建线程子模块,用于按照所述线程个数创建线程,并按照所述单次记录数为每个所述创建的线程分配数据区间;
启动线程子模块,用于按照所述数据区间启动所述创建的每一个线程。
7.根据权利要求6所述的装置,其特征在于,所述导出配置信息还包括缓存失效时间;所述装置还包括:
获取模块,用于从数据库中获取所述待导出数据的第一记录数;
比较模块,用于比较所述第一记录数与上一次相同导出条件下导出时的第二记录数;
判断模块,用于当所述第一记录数与第二记录数相等时,判断所述上一次进行导出操作时的导出时间是否在所述缓存失效时间内;
执行模块,用于当所述判断模块的结果为否时,执行所述根据所述导出条件、最大线程数和单次记录数生成导出任务。
8.根据权利要求6所述的装置,其特征在于,还包括:
保存模块,用于保存本次导出时的导出条件和导出的记录总数。
9.根据权利要求6所述的装置,其特征在于,所述导出模块具体包括:
第二获取子模块,用于获取每个线程的数据区间对应的待导出数据;
生成子模块,用于调用相应的目标格式文件组件,将所述待导出数据生成对应个数的目标格式的文件。
10.根据权利要求6所述的装置,其特征在于,还包括:
返回模块,用于在同步模式下,直接将所述导出的结果文件返回至客户端。
CN200910166485.0A 2009-08-19 2009-08-19 一种数据导出的方法和装置 Active CN101996067B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200910166485.0A CN101996067B (zh) 2009-08-19 2009-08-19 一种数据导出的方法和装置
HK11103957.2A HK1149962A1 (zh) 2009-08-19 2011-04-19 種數據導出的方法和裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910166485.0A CN101996067B (zh) 2009-08-19 2009-08-19 一种数据导出的方法和装置

Publications (2)

Publication Number Publication Date
CN101996067A CN101996067A (zh) 2011-03-30
CN101996067B true CN101996067B (zh) 2014-07-16

Family

ID=43786257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910166485.0A Active CN101996067B (zh) 2009-08-19 2009-08-19 一种数据导出的方法和装置

Country Status (2)

Country Link
CN (1) CN101996067B (zh)
HK (1) HK1149962A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779062A (zh) * 2011-05-09 2012-11-14 阿里巴巴集团控股有限公司 一种访问系统资源的线程数量的控制方法及装置
CN103873517B (zh) * 2012-12-14 2017-07-14 中兴通讯股份有限公司 一种数据同步的方法、装置和系统
CN103034735B (zh) * 2012-12-26 2017-02-08 北京讯鸟软件有限公司 一种大数据分布式文件导出方法
CN103810238A (zh) * 2013-11-20 2014-05-21 国家电网公司 一种基于异步处理的大数据量Excel文件导出方法
CN106407231A (zh) * 2015-08-03 2017-02-15 天脉聚源(北京)科技有限公司 一种数据多线程导出方法及系统
CN107229656B (zh) * 2016-03-25 2020-11-24 北京京东尚科信息技术有限公司 全量数据导出方法、装置及系统
CN106776829A (zh) * 2016-11-28 2017-05-31 成都广达新网科技股份有限公司 一种数据导出系统及其工作方法
CN108121597A (zh) * 2016-11-29 2018-06-05 迈普通信技术股份有限公司 一种大数据导出装置及方法
CN106919684A (zh) * 2017-03-02 2017-07-04 百度在线网络技术(北京)有限公司 数据导出方法、装置、设备及存储介质
CN107704442A (zh) * 2017-03-31 2018-02-16 广东网金控股股份有限公司 一种基于数据安全的excel导出方法和装置
CN107632880B (zh) * 2017-08-31 2021-05-04 深圳市丰巢科技有限公司 导出excel数据的方法、存储介质及电子设备
CN107526635A (zh) * 2017-09-05 2017-12-29 成都知道创宇信息技术有限公司 一种数据异步导出方法
CN107798111B (zh) * 2017-11-01 2021-04-06 四川长虹电器股份有限公司 一种分布式环境中大批量导出数据的方法
CN110019339B (zh) * 2017-11-20 2021-11-30 北京京东尚科信息技术有限公司 一种数据查询方法和系统
CN108429799B (zh) * 2018-03-01 2021-11-16 北京天融信网络安全技术有限公司 批量文件的并行传输方法、装置及存储介质
CN110532311B (zh) * 2019-08-14 2023-11-28 泰安协同软件有限公司 一种基于队列的分布式数据导出方法及系统
CN110851249A (zh) * 2019-10-14 2020-02-28 中国平安财产保险股份有限公司 一种数据导出的方法及设备
CN111125174A (zh) * 2019-12-06 2020-05-08 东软集团股份有限公司 数据导出方法、装置、存储介质、电子设备
CN111221535B (zh) * 2019-12-31 2023-07-14 深圳市九洲电器有限公司 线程分配方法、服务器及计算机可读存储介质
CN112100245B (zh) * 2020-09-18 2024-05-31 咪咕文化科技有限公司 数据导出方法、装置、电子设备和存储介质
CN112597224A (zh) * 2020-12-21 2021-04-02 中国工商银行股份有限公司 数据导出方法、数据导出装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1858735A (zh) * 2005-12-30 2006-11-08 华为技术有限公司 一种海量数据的处理方法
CN101039212A (zh) * 2006-03-15 2007-09-19 中兴通讯股份有限公司 一种数据快速入库方法
CN101388790A (zh) * 2007-09-14 2009-03-18 中兴通讯股份有限公司 一种导入无线网络性能数据的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836505B2 (en) * 2006-06-05 2010-11-16 Eacceleration Corporation Accelerated file scanning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1858735A (zh) * 2005-12-30 2006-11-08 华为技术有限公司 一种海量数据的处理方法
CN101039212A (zh) * 2006-03-15 2007-09-19 中兴通讯股份有限公司 一种数据快速入库方法
CN101388790A (zh) * 2007-09-14 2009-03-18 中兴通讯股份有限公司 一种导入无线网络性能数据的方法

Also Published As

Publication number Publication date
CN101996067A (zh) 2011-03-30
HK1149962A1 (zh) 2011-10-21

Similar Documents

Publication Publication Date Title
CN101996067B (zh) 一种数据导出的方法和装置
CN107402991B (zh) 一种写入半结构化数据的方法和分布式NewSQL数据库系统
CN110489313B (zh) 基于区块链的操作日志记录方法、装置及存储介质
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
EP3039574A1 (en) Queries involving multiple databases and execution engines
CN103345484A (zh) 基于动态域的报表处理系统及方法
CN104573065A (zh) 一种基于元数据的报表展示引擎
CN101739452A (zh) 一种数据交换接口及其实现方法
CN111914135A (zh) 数据查询方法、装置、电子设备及存储介质
CN105550270B (zh) 数据库查询方法和装置
US20140052727A1 (en) Data processing for database aggregation operation
CN106021207A (zh) 专利撰写系统及其方法
CN102779138A (zh) 实时数据的硬盘存取方法
CN101408882B (zh) 一种授权文档的检索方法和系统
US9298686B2 (en) System and method for simulating discrete financial forecast calculations
US11907264B2 (en) Data processing method, data querying method, and server device
CN101645062A (zh) 一种报表生成方法、系统及信息管理设备
CN111125045A (zh) 一种轻量级etl处理平台
CN114090686A (zh) 一种出账加速方法及装置
CN112258151B (zh) 一种基于pandas的对账方法、装置、计算机设备和存储介质
CN110597899B (zh) 项目经费管理方法及系统
CN113407657A (zh) 基于单级数据库的数据查询方法、装置、设备及存储介质
CN113722296A (zh) 一种农业信息处理方法、装置、电子设备及存储介质
CN112395291A (zh) 一种根据数据资产动态生成宽表的方法及系统
CN111161047A (zh) 银行业务数据处理、查询方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1149962

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1149962

Country of ref document: HK

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211112

Address after: Room 554, floor 5, building 3, No. 969, Wenyi West Road, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee after: Taobao (China) Software Co., Ltd

Address before: P.O. Box 847, 4th floor, capital building, Grand Cayman, British Cayman Islands

Patentee before: Alibaba Group Holdings Limited