CN112817926B - 文件处理方法及装置、存储介质及电子装置 - Google Patents
文件处理方法及装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN112817926B CN112817926B CN202110197767.8A CN202110197767A CN112817926B CN 112817926 B CN112817926 B CN 112817926B CN 202110197767 A CN202110197767 A CN 202110197767A CN 112817926 B CN112817926 B CN 112817926B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- offset
- target
- determining
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明公开了一种文件处理方法及装置、存储介质及电子装置,上述方法包括:获取待解析处理的文件,读取文件的文件头中的数据压缩参数;根据数据压缩参数确定文件被压缩的目标内容,以确定出待解析的目标内容的数据偏移量以及数据长度;提取文件中的文件主表,根据目标内容的数据偏移量以及数据长度对文件主表进行目标格式的解析,以得到目标格式的文件数据,即通过获取待解析处理的文件的压缩参数,确定文件中被压缩内容的数据偏移量以及数据长度,进而对文件进行解析,解决了相关技术中,对于DUMP文件无法直接进行解析读取等问题,减少了DUMP文件读时对于数据库环境依赖,加快了对于DUMP文件的处理效率。
Description
技术领域
本发明涉及数据转储、数据分析、数据处理等技术领域,具体而言,涉及一种文件处理方法及装置、存储介质及电子装置。
背景技术
Oracle数据泵(EXPDP)是在数据库之间或者在数据库与操作系统之间传输数据的工具。在日常的Oracle数据库运维过程中,因为数据泵技术高效的性能优势经常将EXPDP导出的DUMP文件作为数据转储、备份、迁移的载体。
EXPDP工具导出的DUMP文件中默认会将元数据信息进行压缩处理,且还可以通过指定命令参数对表中数据进行压缩处理。由于DUMP文件格式的复杂性,并且文件中的重要内容均可被压缩处理,因此无法直接读取其中内容。
如果要获得压缩DUMP文件中的内容只能通过将其导入至Oracle数据库服务,再通过访问Oracle数据库服务读取。这种访问方法主要的不足之处有两点:1.该方法需要依赖于一套Oracle数据库环境,提高数据使用成本;2.其次因数据需要经历一次迁移导入过程,数据规模较大情况下,会伴随着巨大性能开销。
为了提高访问DUMP文件中内容的性能,实现对DUMP文件的直接解析读取是最佳途径。如何直接解析读取DUMP文件尤其是被压缩的DUMP文件一直是相关领域的技术难题。
针对相关技术中,对于DUMP文件无法直接进行解析读取等问题,尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种文件处理方法及装置、存储介质及电子装置,以至少解决相关技术中,以至少解决相关技术中,对于DUMP文件无法直接进行解析读取等问题。
根据本发明实施例的一个方面,提供了一种文件处理方法,其特征在于,包括:获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
在一个示例性实施例中,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数,包括:读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
在一个示例性实施例中,根据所述第一类字节确定所述文件的解压步骤之后,上述方法还包括:读取所述文件头中的第二类字节,其中,所述第二类字节用于指示压缩数据中数据块的偏移值;根据所述偏移值确定出文件主表在文件中的数据偏移量,其中,所述数据偏移量用于指示根据预设大端字节序进行整型转换的偏移值;根据所述数据偏移量确定出所述文件的指针偏移。
在一个示例性实施例中,根据所述数据偏移量确定出所述文件的指针偏移之后,上述方法还包括:读取所述文件头中的第三类字节,其中,所述第三类字节用于指示文件中表对象的压缩算法;根据所述压缩算法确定目标数据偏移量和目标数据长度,通过所述目标数据偏移量和所述目标数据长度对所述文件中的表对象进行解压缩。
在一个示例性实施例中,根据所述第一类字节确定所述文件的解压步骤之前,上述方法还包括:当所述第一类字节对应的值指示所述文件为非压缩文件时,获取所述文件头中的数据块大小以及所述文件主表的数据块偏移,以确定文件主表在文件中的偏移参数;根据所述偏移参数解析所述文件主表,得到所述文件主表的行数据;通过所述行数据分别确定所述文件主表的表结构以及所述文件主表的表数据的数据偏移量和数据长度。
在一个示例性实施例中,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,包括:根据所述目标内容的数据偏移量以及数据长度设置所述文件的读取偏移指针;在确定所述目标内容的字段类型的情况下,通过所述读取偏移指针按照目标格式解析所述目标内容;根据解析结果确定出所述目标内容为所述目标格式的文件数据。
根据本发明实施例的另一个方面,还提供了一种文件处理装置,包括:获取模块,用于获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;确定模块,用于根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;解析模块,用于提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第二类字节,其中,所述第二类字节用于指示压缩数据中数据块的偏移值;根据所述偏移值确定出文件主表在文件中的数据偏移量,其中,所述数据偏移量用于指示根据预设大端字节序进行整型转换的偏移值;根据所述数据偏移量确定出所述文件的指针偏移。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第三类字节,其中,所述第三类字节用于指示文件中表对象的压缩算法;根据所述压缩算法确定目标数据偏移量和目标数据长度,通过所述目标数据偏移量和所述目标数据长度对所述文件中的表对象进行解压缩。
在一个示例性实施例中,上述获取模块,还用于当所述第一类字节对应的值指示所述文件为非压缩文件时,获取所述文件头中的数据块大小以及所述文件主表的数据块偏移,以确定文件主表在文件中的偏移参数;根据所述偏移参数解析所述文件主表,得到所述文件主表的行数据;通过所述行数据分别确定所述文件主表的表结构以及所述文件主表的表数据的数据偏移量和数据长度。
在一个示例性实施例中,上述解析模块,还用于根据所述目标内容的数据偏移量以及数据长度设置所述文件的读取偏移指针;在确定所述目标内容的字段类型的情况下,通过所述读取偏移指针按照目标格式解析所述目标内容;根据解析结果确定出所述目标内容为所述目标格式的文件数据。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述文件处理方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的文件处理方法。
在本发明实施例中,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,即通过获取待解析处理的文件的压缩参数,确定文件中被压缩内容的数据偏移量以及数据长度,进而对文件进行解析,解决了相关技术中,对于DUMP文件无法直接进行解析读取等问题,减少了DUMP文件读时对于数据库环境依赖,加快了对于DUMP文件的处理效率,提供一种高效且无需Oracle数据库环境依赖方法,直接对DUMP文件中数据进行解析,填补了在DUMP文件解析技术方向的缺失。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种文件处理方法的计算机终端的硬件结构框图;
图2是根据本发明实施例的文件处理方法的流程图;
图3是根据本发明可选实施例定义的DUMP文件的整体结构图;
图4是根据本发明可选实施例的读取DUMP文件中压缩数据的整体流程示意图;
图5是根据本发明可选实施例的解析DUMP文件的流程图;
图6是根据本发明可选实施例的解析DUMP文件中Meta Data的流程示意图;
图7是根据本发明可选实施例的解析DUMP文件中Table Data的流程示意图;
图8是根据本发明可选实施例的对DUMP文件中Table Meta中偏移量和长度解析示意图;
图9是根据本发明可选实施例的压缩分片定义数据示意图;
图10是根据本发明实施例的文件处理装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在计算机终端、数据库或者类似的运算装置中执行。以运行在数据库上为例,图1是本发明实施例的一种文件处理方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例性实施例中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中文件处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种文件处理方法,图2是根据本发明实施例文件处理方法的流程图,该流程包括如下步骤:
步骤S202,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
步骤S204,根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
步骤S206,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
通过上述步骤,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,即通过获取待解析处理的文件的压缩参数,确定文件中被压缩内容的数据偏移量以及数据长度,进而对文件进行解析,解决了相关技术中,对于DUMP文件无法直接进行解析读取等问题,减少了DUMP文件读时对于数据库环境依赖,加快了对于DUMP文件的处理效率,提供一种高效且无需Oracle数据库环境依赖方法,直接对DUMP文件中数据进行解析,填补了在DUMP文件解析技术方向的缺失。
需要说明的是,上述对于DUMP文件的解析不仅限于数据读取、数据迁移、数据脱敏、数据分析、数据加密等数据处理场景及相关产品中,本发明对此不做过多限定。
在一个示例性实施例中,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数,包括:读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
例如,在Oracle的DUMP文件中,文件头中第51个字节用于指示DUMP文件中哪些内容被压缩,当第51个字节的值为0x00(NONE),表示当前DUMP文件未压缩,当第51个字节的值为0x02(METADATA_ONLY),表示当前DUMP文件中仅有主表未被压缩;当第51个字节的值为0x04(DATA_ONLY),表示当前DUMP文件中仅有数据表未被压缩,当第51个字节的值为0x06(ALL),表示当前DUMP文件为全压缩文件,进而可以根据文件头中的用于指示文件中压缩数据的分布情况的第一类字节确定出需要解压的数据,以确定出携带的压缩数据的文件的解析流程。
在一个示例性实施例中,根据所述第一类字节确定所述文件的解压步骤之后,上述方法还包括:读取所述文件头中的第二类字节,其中,所述第二类字节用于指示压缩数据中数据块的偏移值;根据所述偏移值确定出文件主表在文件中的数据偏移量,其中,所述数据偏移量用于指示根据预设大端字节序进行整型转换的偏移值;根据所述数据偏移量确定出所述文件的指针偏移。
简而言之,在对文件中的压缩数据进行解析时,需要确定文件中主表的整体偏移量,根据文件头中指示的数据块大小,通过预设大端字节序对数据块进行整型计算,进而可以通过设置对文件读取的文件指针的偏移为整型大小,使得通过指针读取的数据块呈整型分布,并进行整型数据块的缓存。
在一个示例性实施例中,根据所述数据偏移量确定出所述文件的指针偏移之后,上述方法还包括:读取所述文件头中的第三类字节,其中,所述第三类字节用于指示文件中表对象的压缩算法;根据所述压缩算法确定目标数据偏移量和目标数据长度,通过所述目标数据偏移量和所述目标数据长度对所述文件中的表对象进行解压缩。
例如,在Oracle的DUMP文件中文件头的第53个字节用于确定Table Data表数据的压缩算法,进而在已确认压缩算法的情况下,确定出表对象的压缩算法对应的tableMetaLen表定义长度、tableMetaOffset表定义偏移量、tableDataLen表数据长度、tableDataOffset表数据偏移量、compressedSegmentDefinitionLen压缩分片定义长度、compressedSegmentDefinitionOffset压缩分片定义偏移量,进而根据压缩算法中的压缩量来实现对表对象的解压缩。
在一个示例性实施例中,根据所述第一类字节确定所述文件的解压步骤之前,上述方法还包括:当所述第一类字节对应的值指示所述文件为非压缩文件时,获取所述文件头中的数据块大小以及所述文件主表的数据块偏移,以确定文件主表在文件中的偏移参数;根据所述偏移参数解析所述文件主表,得到所述文件主表的行数据;通过所述行数据分别确定所述文件主表的表结构以及所述文件主表的表数据的数据偏移量和数据长度。
也就是说,对于非压缩的文件可以通过读取文件头中的数据块大小以及文件主表的数据块偏移,来快速确定出文件的偏移参数,以得到文件主表的行数据,进而可以计算出文件主表的表结构的数据偏移量和数据长度以及文件主表的表数据的数据偏移量和数据长度。
在一个示例性实施例中,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,包括:根据所述目标内容的数据偏移量以及数据长度设置所述文件的读取偏移指针;在确定所述目标内容的字段类型的情况下,通过所述读取偏移指针按照目标格式解析所述目标内容;根据解析结果确定出所述目标内容为所述目标格式的文件数据。
例如,可将DUMP文件依照XML格式进行解析,使得解析后的DUMP文件可以快速的被目标对象识别,提升了目标对象对于解析后DUMP数据的操作效率,使得解析后的DUMP可以被高效率的编辑。
为了更好的理解本发明实施例以及可选实施例的技术方案,以下结合示例对上述的文件处理方法的流程进行解释说明,但不用于限定本发明实施例的技术方案。
可选的,如图3所示,为本发明可选实施例中的定义的DUMP文件的整体结构图,包含有4096字节的文件头,4096*N字节的表对象,4096*(N+1)字节的数据表,4096*M字节的master表,其中,N、M为大于1的正整数。
作为一种可选的实施方式,本发明可选实施例中提供了一种解析Oracle的DUMP文件的方法,如图4所示为读取DUMP文件中压缩数据的整体流程图,包括以下步骤:
步骤1:读取Compression压缩参数;
1-1)读取文件头中第51个字节,根据该值确定DUMP文件中哪些内容被压缩;
如果该值为0x00(NONE)则该文件未压缩,可选的,将采用如下方式进行解析,图5是根据本发明可选实施例的解析DUMP文件的流程图,包含以下步骤:
步骤S302,解析DUMP文件头;
1.读取数据块大小blockSize;
2.读取主表master table的数据块偏移mblockOffset;
3.缓存读取到的数据块大小blockSize和数据块偏移mblockOffset等信息;
步骤S304,解析Master table(相当于本发明实施例中的文件主表);
1.计算Master table在文件中偏移masterTableOffset;
2.按照步骤S308解析主表Master Table的行数据masterTableRows;
3.从行数据masterTableRows中计算元数据Meta Data的偏移metaOffset和长度metaLength;
4.从行数据masterTableRows中计算表数据Table Data的偏移tableOffset和长度tableLength;
5.缓存上述计算结果;
步骤S306,解析元数据Meta Data;如图6所示。
1.设置文件读取指针偏移为元数据块的偏移metaOffset并读取长度为metaLength字节数据的元数据metaDatas;
2.将元数据metaDatas按照XML格式进行解析,以索引对象为例,其XML(Extensible Markup Language,可扩展标记语言,简称XML)结构如下表1所示。
表1
3.解析其他对象XML数据。
步骤S308,解析表数据Table Data;如图7所示。
1.设置文件读取指针偏移为表数据块的偏移tableOffset,如果是主表MasterTable,则tableOffset=masterTableOffset;
2.计算表定义长度tableMetaLen、表定义偏移量tableMetaOffset、表数据长度tableDataLen、表数据偏移量tableDataOffset(参);
3.设置文件读取偏移为tableOffset+tableMetaOffset并读取tableMetaLen长度的数据tableMetaDatas;
4.按照XML格式解析tableMetaDatas,以表字段为例,其XML结构如下表2所示:
5.按照XML结构数据,解析其他Table MetaData,例如PART_OBJ;
6.设置文件读取偏移为待读取的指定表在文件中的偏移tOffset与待读取的指定表中表数据的偏移tableDataOffset的和,即将读取文件的偏移指针设置为tOffset+tableDataOffset;
7.解析表的行数据,直到所有该表所有行数据读取完毕;
步骤S310,如果文件中含有多个Table表,则按照步骤S308读取该数据表中的表数据Table Data,直到所有Table表读取结束,完成非压缩的DUMP文件的解析。
如果该值为0x02(METADATA_ONLY),则依次进行步骤2、步骤3;
如果该值为0x04(DATA_ONLY),则依次进行步骤2、步骤4;
如果该值为0x06(ALL),则进入步骤2、步骤3、步骤4;
1-2)读取文件头中第53个字节,根据该值确定Table Data压缩算法;
步骤2:读取Master Table数据并缓存;
2-1)读取文件头中第54-57字节,按大端字节序转为整型(mtBlockOffset,主表数据块偏移);
2-2)计算Master Table在文件中的偏移量:mtOffset=(mtBlockOffset-1)*4096;即通过计算主表数据块偏移在预设的大端字节序下的整体偏移情况,确定出主表Master Table在文件中的偏移量mtOffset。
2-3)设置文件指针偏移为mtOffset;
2-4)如果为METADATA_ONLY,则Master表未压缩,直接读取,执行2-6;否则执行2-5;
2-5)按照步骤4读取Master Table中的数据;
2-6)缓存Master Table中的数据;
步骤3:读取Meta Data压缩数据;
3-1)读取文件头中第52个字节,根据该值确定Meta Data压缩算法;
3-2)从Master Table的数据中提取指定Meta Data数据偏移量(mdOffset)及MetaData数据长度(mdLen);
3-3)设置文件指针偏移为mdOffset并读取长度为mdLen的数据作为Meta Data压缩数据;
3-4)进入步骤5将数据解压缩,获取解压后的Meta Data定义原文;
步骤4:读取Table Data压缩数据;
4-1)从Master Table中读取指定表在文件中的偏移(tOffset),如果是MasterTable则:tOffset=mtOffset;
4-2)设置文件指针偏移为tOffset,依次从第6个字节开始读取6组8字节内容,均按大端字节序转为整型,如附图8所示是本发明可选实施例的DUMP文件中对于Table Meta中偏移量和长度解析示意图,具体包括:
Magic number:幻数;
tableMetaLen:表定义长度;
tableMetaOffset:表定义偏移量;
tableDataLen:表数据长度;
tableDataOffset:表数据偏移量;
compressedSegmentDefinitionLen:压缩分片定义长度;
compressedSegmentDefinitionOffset:压缩分片定义偏移量;
4-3)设置文件指针偏移为tOffset+tableMetaOffset,读取长度为tableMetaLen的数据为表定义压缩数据;
4-4)将表定义压缩数据以步骤5将数据解压缩,获取解压后的表定义原文数据;
4-5)设置文件指针偏移为tOffset+compressedSegmentDefinitionOffset,读取长度为compressedSegmentDefinitionLen读取压缩分片定义数据;
4-6)如图9所示,压缩分片定义为N个8字节整型数据组成,以大端字节序组织,其中第一个数据为0,之后的整数含义为表数据内容每个压缩分片数据的原文长度(originalDataLenArray),直到出现第二个0为止,再之后的整数含义为表数据内容每个压缩分片数据的压缩后长度(compressedDataLenArray);
4-7)设置文件指针偏移为tOffset+tableDataOffset,并根据compressedDataLenArray中定义的压缩分片数据长度依次读取每一个分片中完整的压缩后表数据,由步骤5进行解压缩;
步骤5:解压缩数据;
5-1)校验幻数Magic Number,待解压的数据头是否为十六进制数据:4B 47 43 8001 48 44 52 3E 54 3C 3F;
5-2)如果不是则为不合法数据,不进行解压缩;否则数据合法,进入5-3;
5-3)如果是Meta Data压缩数据,则使用3-1中读取的压缩算法进行解压缩;
如果是Table Data则使用1-2中读取的压缩算法进行解压缩。
通过上述实施例,通过提供一种解析Oracle的DUMP文件的方法,为Oracle DUMP文件的全解析提供技术基础。基于该方法解析访问DUMP文件具有高性能、无Oracle数据库环境依赖的优势。可广泛用于包括但不限于数据读取、数据迁移、数据脱敏、数据分析、数据加密等数据处理场景及相关产品中,本发明可选实施例高效且无需Oracle数据库环境依赖方法,直接对DUMP文件中数据进行解析,填补了在DUMP文件解析技术方向的缺失。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种文件处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明实施例的文件处理装置的结构框图,如图10所示,该装置包括:
获取模块52,用于获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
确定模块54,用于根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
解析模块56,用于提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
通过上述技术方案,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,即通过获取待解析处理的文件的压缩参数,确定文件中被压缩内容的数据偏移量以及数据长度,进而对文件进行解析,解决了相关技术中,对于DUMP文件无法直接进行解析读取等问题,减少了DUMP文件读时对于数据库环境依赖,加快了对于DUMP文件的处理效率,提供一种高效且无需Oracle数据库环境依赖方法,直接对DUMP文件中数据进行解析,填补了在DUMP文件解析技术方向的缺失。
需要说明的是,上述对于DUMP文件的解析不仅限于数据读取、数据迁移、数据脱敏、数据分析、数据加密等数据处理场景及相关产品中,本发明对此不做过多限定。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
例如,在Oracle的DUMP文件中,文件头中第51个字节用于指示DUMP文件中哪些内容被压缩,当第51个字节的值为0x00(NONE),表示当前DUMP文件未压缩,当第51个字节的值为0x02(METADATA_ONLY),表示当前DUMP文件中仅有主表未被压缩;当第51个字节的值为0x04(DATA_ONLY),表示当前DUMP文件中仅有数据表未被压缩,当第51个字节的值为0x06(ALL),表示当前DUMP文件为全压缩文件,进而可以根据文件头中的用于指示文件中压缩数据的分布情况的第一类字节确定出需要解压的数据,以确定包含压缩数据的文件的解析流程。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第二类字节,其中,所述第二类字节用于指示压缩数据中数据块的偏移值;根据所述偏移值确定出文件主表在文件中的数据偏移量,其中,所述数据偏移量用于指示根据预设大端字节序进行整型转换的偏移值;根据所述数据偏移量确定出所述文件的指针偏移。
简而言之,在对文件中的压缩数据进行解析时,需要确定文件中主表的整体偏移量,根据文件头中指示的数据块大小,通过预设大端字节序对数据块进行整型计算,进而可以通过设置对文件读取的文件指针的偏移为整型大小,使得通过指针读取的数据块呈整型分布,并进行整型数据块的缓存。
在一个示例性实施例中,上述获取模块,还用于读取所述文件头中的第三类字节,其中,所述第三类字节用于指示文件中表对象的压缩算法;根据所述压缩算法确定目标数据偏移量和目标数据长度,通过所述目标数据偏移量和所述目标数据长度对所述文件中的表对象进行解压缩。
例如,在Oracle的DUMP文件中文件头的第53个字节用于确定Table Data表数据的压缩算法,进而在已确认压缩算法的情况下,确定出表对象的压缩算法对应的tableMetaLen表定义长度、tableMetaOffset表定义偏移量、tableDataLen表数据长度、tableDataOffset表数据偏移量、compressedSegmentDefinitionLen压缩分片定义长度、compressedSegmentDefinitionOffset压缩分片定义偏移量,进而根据压缩算法中的压缩量来实现对表对象的解压缩。
在一个示例性实施例中,上述获取模块,还用于当所述第一类字节对应的值指示所述文件为非压缩文件时,获取所述文件头中的数据块大小以及所述文件主表的数据块偏移,以确定文件主表在文件中的偏移参数;根据所述偏移参数解析所述文件主表,得到所述文件主表的行数据;通过所述行数据分别确定所述文件主表的表结构以及所述文件主表的表数据的数据偏移量和数据长度。
也就是说,对于非压缩的文件可以通过读取文件头中的数据块大小以及文件主表的数据块偏移,来快速确定出文件的偏移参数,以得到文件主表的行数据,进而可以计算出文件主表的表结构的数据偏移量和数据长度以及文件主表的表数据的数据偏移量和数据长度。
在一个示例性实施例中,上述解析模块,还用于根据所述目标内容的数据偏移量以及数据长度设置所述文件的读取偏移指针;在确定所述目标内容的字段类型的情况下,通过所述读取偏移指针按照目标格式解析所述目标内容;根据解析结果确定出所述目标内容为所述目标格式的文件数据。
例如,可将DUMP文件依照XML格式进行解析,使得解析后的DUMP文件可以快速的被目标对象识别,提升了目标对象对于解析后DUMP数据的操作效率,使得解析后的DUMP可以被高效率的编辑。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
S2,根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
S3,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
S2,根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
S3,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种文件处理方法,其特征在于,应用于DUMP文件,包括:
获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据;
其中,所述获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数,包括:
读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;
根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
2.根据权利要求1所述的方法,其特征在于,根据所述第一类字节确定所述文件的解压步骤之后,所述方法还包括:
读取所述文件头中的第二类字节,其中,所述第二类字节用于指示压缩数据中数据块的偏移值;
根据所述偏移值确定出文件主表在文件中的数据偏移量,其中,所述数据偏移量用于指示根据预设大端字节序进行整型转换的偏移值;
根据所述数据偏移量确定出所述文件的指针偏移。
3.根据权利要求2所述的方法,其特征在于,根据所述数据偏移量确定出所述文件的指针偏移之后,所述方法还包括:
读取所述文件头中的第三类字节,其中,所述第三类字节用于指示文件中表对象的压缩算法;
根据所述压缩算法确定目标数据偏移量和目标数据长度,通过所述目标数据偏移量和所述目标数据长度对所述文件中的表对象进行解压缩。
4.根据权利要求1所述的方法,其特征在于,根据所述第一类字节确定所述文件的解压步骤之前,所述方法还包括:
当所述第一类字节对应的值指示所述文件为非压缩文件时,获取所述文件头中的数据块大小以及所述文件主表的数据块偏移,以确定文件主表在文件中的偏移参数;
根据所述偏移参数解析所述文件主表,得到所述文件主表的行数据;
通过所述行数据分别确定所述文件主表的表结构以及所述文件主表的表数据的数据偏移量和数据长度。
5.根据权利要求1所述的方法,其特征在于,提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据,包括:
根据所述目标内容的数据偏移量以及数据长度设置所述文件的读取偏移指针;
在确定所述目标内容的字段类型的情况下,通过所述读取偏移指针按照目标格式解析所述目标内容;
根据解析结果确定出所述目标内容为所述目标格式的文件数据。
6.一种文件处理装置,其特征在于,应用于DUMP文件,包括:
获取模块,用于获取待解析处理的文件,读取所述文件的文件头中的数据压缩参数;
确定模块,用于根据所述数据压缩参数确定所述文件被压缩的目标内容,以确定出待解析的所述目标内容的数据偏移量以及数据长度;
解析模块,用于提取所述文件中的文件主表,根据所述目标内容的数据偏移量以及数据长度对所述文件主表进行目标格式的解析,以得到所述目标格式的文件数据;
所述获取模块,还用于读取所述文件头中的第一类字节,其中,所述第一类字节用于指示文件中压缩数据的分布情况;根据所述第一类字节确定所述文件的解压步骤,其中,所述解压步骤用于指示对于待解析处理的文件的压缩数据的解析流程。
7.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至5任一项中所述的方法。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至5任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197767.8A CN112817926B (zh) | 2021-02-22 | 2021-02-22 | 文件处理方法及装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197767.8A CN112817926B (zh) | 2021-02-22 | 2021-02-22 | 文件处理方法及装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817926A CN112817926A (zh) | 2021-05-18 |
CN112817926B true CN112817926B (zh) | 2022-02-22 |
Family
ID=75864681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110197767.8A Active CN112817926B (zh) | 2021-02-22 | 2021-02-22 | 文件处理方法及装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817926B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115587076B (zh) * | 2022-12-12 | 2023-05-16 | 北京象帝先计算技术有限公司 | 数据解压系统、图形处理系统、组件、设备及解压方法 |
CN115865097B (zh) * | 2023-02-17 | 2023-05-23 | 浪潮电子信息产业股份有限公司 | 一种数据压缩方法、系统、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
CN111062189A (zh) * | 2018-10-16 | 2020-04-24 | 鸿合科技股份有限公司 | 一种数据解析方法及装置、电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4716709B2 (ja) * | 2004-06-10 | 2011-07-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 構造化文書処理装置、構造化文書処理方法、及びプログラム |
CN1979475A (zh) * | 2005-12-07 | 2007-06-13 | 华为技术有限公司 | 一种压缩文件处理方法 |
CN101819602A (zh) * | 2010-05-07 | 2010-09-01 | 北京飞天诚信科技有限公司 | 一种数据文件引擎的实现方法 |
CN109582653B (zh) * | 2018-11-14 | 2020-12-08 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
US11200004B2 (en) * | 2019-02-01 | 2021-12-14 | EMC IP Holding Company LLC | Compression of data for a file system |
-
2021
- 2021-02-22 CN CN202110197767.8A patent/CN112817926B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062189A (zh) * | 2018-10-16 | 2020-04-24 | 鸿合科技股份有限公司 | 一种数据解析方法及装置、电子设备 |
CN110334066A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种基于FPGA的Gzip解压缩方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112817926A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112817926B (zh) | 文件处理方法及装置、存储介质及电子装置 | |
US9483533B2 (en) | Method and apparatus for processing time series data | |
US6324637B1 (en) | Apparatus and method for loading objects from a primary memory hash index | |
US9081790B2 (en) | Methods and apparatus for increasing the efficiency of electronic data storage and transmission | |
EP2863593B1 (en) | A method, apparatus and computer program for modifying messages in a communications network | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN105446975A (zh) | 一种文件打包方法及装置 | |
CN110851409A (zh) | 一种日志压缩、解压缩方法、设备及存储介质 | |
CN112613271A (zh) | 数据分页方法、装置、计算机设备及存储介质 | |
CN103186644A (zh) | 一种下载字库文件的方法、设备及系统 | |
CN106844479B (zh) | 文件的压缩、解压方法及装置 | |
CN109617708B (zh) | 一种埋点日志的压缩方法、设备及系统 | |
CN104484174B (zh) | Rar格式的压缩文件的处理方法和装置 | |
CN113204683B (zh) | 信息重构方法和装置、存储介质及电子设备 | |
CN113986820A (zh) | 一种lz4格式文件转换为gzip格式文件的方法 | |
CN110032432B (zh) | 实例的压缩方法和装置、实例的解压方法和装置 | |
CN114666406B (zh) | 一种基于物模型的电力物联网数据压缩方法及装置 | |
CN112597109B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN106789232B (zh) | 一种高效的信息流程化的处理控制系统 | |
CN117194355B (zh) | 基于数据库的数据处理方法、装置和电子设备 | |
CN114070471B (zh) | 一种测试数据包传输方法、装置、系统、设备和介质 | |
CN110119406B (zh) | 实时任务记录的核对方法及装置 | |
CN109889608B (zh) | 一种动态资源加载方法、装置、电子设备及存储介质 | |
CN117851463A (zh) | 数据解析方法、装置、计算机设备及存储介质 | |
CN115391297A (zh) | 文件处理方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |