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

一种数据导出方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 18:30:43


一种数据导出方法、装置、计算机设备和存储介质

技术领域

本发明涉及计算机技术领域,具体涉及数据导出方法、装置、计算机设备和存储介质。

背景技术

在物联网领域,往往存在这样的应用场景:后端系统中存储的终端设备信息、终端设备上报的数据、终端设备的配置信息等数据需要频繁进行导出;这类数据往往存放在不同的数据库中,如关系型数据库Mysql或者非关系型数据库MongoDB;并且这类数据有某些共同特征:每次导出需要该数据中的某一些不同字段、导出时对格式没有要求。传统的解决方案一般分为两种:一是对于临时导出需求,后端开发人员使用数据库连接工具,如Navicat、MongoDBCompass,手动连接数据库并且导出需要的数据;二是对于经常需要导出的数据,提供一个导出接口供他人使用。这两种方案都有很大的缺陷,比如若是临时导出需求很多,开发人员就会整天都在不同的数据库中导出数据,工作效率低下;若是经常需要导出的数据也很多,每增加一个导出需求,开发人员就需要新编写一个导出接口,大大加重了开发人员的工作任务。

目前,现有技术中的数据导出方法存在导出效率低的问题。

发明内容

针对现有技术中所存在的不足,本发明提供的数据导出方法、装置、计算机设备和存储介质,其解决了现有技术导出效率低的问题,本发明可以将不同平台、不同数据库和不同导出需求进行动态配置,从而达到一次配置多次使用的目的,提高了数据导出效率,减少了开发人员的开发难度和用户等待的时间,为企业达到了降本增效的目的。

第一方面,本发明提供一种数据导出方法,所述方法包括:获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

可选地,根据所述数据源信息与数据库建立连接,包括:根据所述数据源信息中的数据库类型,加载相匹配的驱动程序到虚拟机;当驱动程序加载成功后,将驱动类的实例注册到驱动管理类中;将数据库连接请求发送到驱动管理类,使驱动管理类根据所述数据库连接请求中的数据源地址、端口、用户名和密码与所述数据库建立连接。

可选地,根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令,包括:构造SQL语句生成函数;根据置空函数将所述生成函数中字段名的取值置空;根据所述目标数据库名、所述目标数据表以及目标数据表中对应的字段名对所述生成函数进行赋值,生成所述数据查询命令。

可选地,根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件,包括:根据所述数据查询命令从相对应的数据库中获取数据列表,并将所述数据列表依次存入消息队列;根据所述数据查询命令中的字段名,生成数据导出文件模板中的列表名;根据所述列表名从所述消息队列中读取相对应的数据进行填充,得到所述数据导出文件。

第二方面,本发明提供一种数据导出装置,所述装置包括:数据库连接模块,用于获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;数据源解析模块,用于对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;查询命令生成模块,用于根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;导出文件生成模块,用于根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

可选地,所述数据库连接模块包括:驱动加载单元,用于根据所述数据源信息中的数据库类型,加载相匹配的驱动程序到虚拟机;实例注册单元,用于当驱动程序加载成功后,将驱动类的实例注册到驱动管理类中;连接单元,用于将数据库连接请求发送到驱动管理类,使驱动管理类根据所述数据库连接请求中的数据源地址、端口、用户名和密码与所述数据库建立连接。

可选地,所述查询命令生成模块包括:SQL语句构造模块,用于构造SQL语句生成函数;置空单元,用于根据置空函数将所述生成函数中字段名的取值置空;赋值单元,用于根据所述目标数据库名、所述目标数据表以及目标数据表中对应的字段名对所述生成函数进行赋值,生成所述数据查询命令。

可选地,所述导出文件生成模块包括:数据获取单元,用于根据所述数据查询命令从相对应的数据库中获取数据列表,并将所述数据列表依次存入消息队列;导出文件模板生成单元,用于根据所述数据查询命令中的字段名,生成数据导出文件模板中的列表名;数据填充单元,用于根据所述列表名从所述消息队列中读取相对应的数据进行填充,得到所述数据导出文件。

第三方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

第四方面,本发明提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实现以下步骤:获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

相比于现有技术,本发明具有如下有益效果:

本发明通过不同的数据源信息与相对应的数据库建立连接,根据显示的数据库名以及每个数据库对应的字段列表选择需要导出的字段名,并将需要导出的字段名生成数据查询命令,然后将根据数据查询命令得到的查询结果生成相对应的数据导出文件;因此,本发明可以将不同平台、不同数据库和不同导出需求进行动态配置,从而达到一次配置多次使用的目的,提高了数据导出效率,减少了开发人员的开发难度和用户等待的时间,为企业达到了降本增效的目的。

附图说明

图1所示为本发明实施例提供的一种数据导出方法的流程示意图;

图2所示为本发明实施例提供的另一种数据导出方法的流程示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

第一方面,本发明提供一种数据导出方法,具体包括以下实施例:

图1所示为本发明实施例提供的一种数据导出方法的流程示意图,如图1所示,所述方法具体包括以下步骤:

步骤S101,获取当前数据源信息,并根据所述数据源信息与数据库建立连接。

需要说明的是,数据源是数据库应用程序所使用的数据库或者数据库服务器,本实施例支持的关系型数据库有:Mysql、Oracle、SQL Server等支持sql语句的数据库;非关系型数据库有:MongoDB;其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码。在本实施例中获取当前数据源信息的方式可以是通过web页面动态配置数据源,包括数据源的类型、ip地址、端口、用户名称、用户密码等信息,这些信息将通过接口传输给后端服务。

在本实施例中,根据所述数据源信息与数据库建立连接,包括:根据所述数据源信息中的数据库类型,加载相匹配的驱动程序到虚拟机;当驱动程序加载成功后,将驱动类的实例注册到驱动管理类中;将数据库连接请求发送到驱动管理类,使驱动管理类根据所述数据库连接请求中的数据源地址、端口、用户名和密码与所述数据库建立连接。

需要说明的是,在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),通过java.lang.Class类的静态方法forName实现,当数据库的驱动成功加载后,会将Driver类的实例注册到DriverManager类中。要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。使用DriverManager的getConnectin(String url,String username,String password)方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。

步骤S102,对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表。

需要说明的是,后端获得参数后,系统会根据不同参数使用JDBC生成不同的Connection,此时,通过web页面发送测试连接请求后,系统会使用Connection测试与数据源的连接情况;并将结果返回给web页面;通过Connection发送SQL语句解析数据源,可以获取数据源中数据库列表、数据库中表格列表、表格中字段名称列表;并呈现在web页面上。

步骤S103,根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令。

在本实施例中,根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令,包括:构造SQL语句生成函数;根据置空函数将所述生成函数中字段名的取值置空;根据所述目标数据库名、所述目标数据表以及目标数据表中对应的字段名对所述生成函数进行赋值,生成所述数据查询命令。

步骤S104,根根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

在本实施例中,根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件,包括:根据所述数据查询命令从相对应的数据库中获取数据列表,并将所述数据列表依次存入消息队列;根据所述数据查询命令中的字段名,生成数据导出文件模板中的列表名;根据所述列表名从所述消息队列中读取相对应的数据进行填充,得到所述数据导出文件。

需要说明的是,提高导出效率和防止数据丢失,本实施例引入消息队列技术,将通过数据查询命令从数据库中获取到的数据列表依次存入消息队列中,再通过另外一个数据处理线程将消息队列中的数据取出放入导出文件模板中,从而得到数据导出文件。

与现有技术相比,本实施例具有以下有益效果:

本发明通过不同的数据源信息与相对应的数据库建立连接,根据显示的数据库名以及每个数据库对应的字段列表选择需要导出的字段名,并将需要导出的字段名生成数据查询命令,然后将根据数据查询命令得到的查询结果生成相对应的数据导出文件;因此,本发明可以将不同平台、不同数据库和不同导出需求进行动态配置,从而达到一次配置多次使用的目的,提高了数据导出效率,减少了开发人员的开发难度和用户等待的时间,为企业达到了降本增效的目的。

需要说明的是,本申请中涉及到名词解释有:(1)数据源:数据库应用程序所使用的数据库或者数据库服务器,本发明支持的关系型数据库有:Mysql、Oracle、SQL Server等支持sql语句的数据库;非关系型数据库有:MongoDB。(2)解析数据源:通过代码获取配置数据源中的数据库名称、数据库结构、表名称、表结构、集合名称等。(3)查询语句:一般指sql语句,在此也泛指非关系型数据库中的筛选条件。(4)JDBC(Java DataBaseConnectivity):Java数据库连接技术,通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。(5)Connection:Java与数据库建立的连接对象(接口)。(6)ResultSet:通过原生JDBC执行SQL语句所获得的结果对象。

本发明是通过以下技术方案实现的,主要分为数据源解析模块和数据导出模块,主要实现方法如下:

一、数据源解析模块,通过java发开实现,主要有以下功能:

通过web页面动态配置数据源,包括数据源的类型、ip地址、端口、用户名称、用户密码等信息;这些信息将通过接口传输给后端;后端获得参数后,系统会根据不同参数使用JDBC生成不同的Connection,此时,通过web页面发送测试连接请求后,系统会使用Connection测试与数据源的连接情况;并将结果返回给web页面;通过Connection发送SQL语句解析数据源,可以获取数据源中数据库列表、数据库中表格列表、表格中字段名称列表;并呈现在web页面上;

二、数据导出模块,通过java开发实现,主要有以下功能:根据web页面勾选的参数在后端通过字符串拼接动态生成查询语句;根据查询语句动态查询数据,得到ResultSet;通过遍历b中所得ResultSet将查询到的数据写入通用EXCEL对象,并设置http response的数据头,最后将EXCEL对象写入response数据流。

图2为本发明提供的支持多种数据库动态导出数据到excel文件的系统流程图,分为以下三个步骤:

步骤一:开发人员在添加数据源的web页面进行配置,将可能会存在数据导出的数据源都完成配置;首先选择数据源的数据库类型,如Mysql;然后依次配置属性包括ip、port、username、password,名称如数据源一、数据源二、数据源三;

步骤二:开发人员保存数据源配置信息,然后点击“测试连接”按钮,若提示“连接成功”则可以进行下一步操作,到此开发人员不再参与导出工作;

步骤三:用户在数据导出web页面进行操作;首先选择要进行导出数据的数据源,如数据源一,将其展开可以看到该数据源下所有数据库/集合的信息;再将数据库/集合展开,可以看到该数据库中表/集合中库的信息;

步骤四:用户展开需要导出的表,可以看到表中的字段;而集合没有字段概念所以无法展开;用户勾选需要导出的字段或选择需要导出的集合;

步骤五:用户点击导出按钮完成数据导出。

本实施例提供的数据导出方法支持多种数据库动态导出数据到excel文件的系统通过在web页面统一配置数据源,将不同平台、不同数据库、不同需求统一了起来,达到了一次配置,多次使用的效果;减少了开发人员的开发难度,减少了用户等待的时间,为企业达到了降本增效的目的。

第二方面,本发明提供一种数据导出装置,所述装置包括:数据库连接模块,用于获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;数据源解析模块,用于对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;查询命令生成模块,用于根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;导出文件生成模块,用于根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

可选地,所述数据库连接模块包括:驱动加载单元,用于根据所述数据源信息中的数据库类型,加载相匹配的驱动程序到虚拟机;实例注册单元,用于当驱动程序加载成功后,将驱动类的实例注册到驱动管理类中;连接单元,用于将数据库连接请求发送到驱动管理类,使驱动管理类根据所述数据库连接请求中的数据源地址、端口、用户名和密码与所述数据库建立连接。

可选地,所述查询命令生成模块包括:SQL语句构造模块,用于构造SQL语句生成函数;置空单元,用于根据置空函数将所述生成函数中字段名的取值置空;赋值单元,用于根据所述目标数据库名、所述目标数据表以及目标数据表中对应的字段名对所述生成函数进行赋值,生成所述数据查询命令。

可选地,所述导出文件生成模块包括:数据获取单元,用于根据所述数据查询命令从相对应的数据库中获取数据列表,并将所述数据列表依次存入消息队列;导出文件模板生成单元,用于根据所述数据查询命令中的字段名,生成数据导出文件模板中的列表名;数据填充单元,用于根据所述列表名从所述消息队列中读取相对应的数据进行填充,得到所述数据导出文件。

第四方面,本发明提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

第四方面,本发明提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实现以下步骤:获取当前数据源信息,并根据所述数据源信息与数据库建立连接,其中所述数据源信息包括数据库类型、数据源地址、端口、用户名和密码;对所有数据库进行数据源解析,获取所有数据库名和每个数据库对应的字段列表;根据选择的目标数据库名和与目标数据库名相对应的字段名,生成数据查询命令;根据所述数据查询命令进行动态查询数据得到查询结果,并将所述查询结果生成数据导出文件。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种数据存储方法、装置、设备及计算机可读存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 一种灰度版本页面访问方法、装置、计算机设备及计算机存储介质
  • 一种检测方法、装置、计算机可读存储介质和计算机设备
  • 数据导出方法、装置、计算机设备和计算机可读存储介质
  • 一种数据导出方法、装置、设备及计算机存储介质
技术分类

06120115597963