一种针对关系型数据库的大容量SQL文件的导入方法技术

技术编号:37123740 阅读:44 留言:0更新日期:2023-04-01 05:19
本发明专利技术公开了一种针对关系型数据库的大容量SQL文件的导入方法,包括以下步骤:S100:SQL文件的词法分析,包括以下步骤:S101:配置词法分析规则,生成词法分析配置文件:根据SQL词法规则及词法分析器配置规则,配置词法类型的识别规则并生成词法分析配置文件;S102:采用词法分析器,将所述词法分析配置文件生成为可执行文件;S103:采用所述可执行文件,生成词法标记;S200:SQL文件的语法分析:生成语法分析配置文件,采用语法分析器生成SQL文件中各个语句各自所对应的语法结构体对象;S300:语法结构持久化:采用所述语法结构体对象,提取数据库结构并存储到JSON文件中;S400:根据所述JSON文件创建关系型数据库,将所获取的文本文件导入至关系型数据库。文件导入至关系型数据库。文件导入至关系型数据库。

【技术实现步骤摘要】
一种针对关系型数据库的大容量SQL文件的导入方法


[0001]本专利技术属于数据库及数据恢复领域,涉及大容量SQL文件的导入方法,尤其涉及一种针对关系型数据库的大容量SQL文件的导入方法。

技术介绍

[0002]随着信息技术的飞速发展,各种数据也呈指数级的不断增长,对于这些数据的存储、备份及备份下载的需求也日益凸显。为此出现了各种各样的数据库,如MYSQL、SQLServer、Oracle等。部分厂家提供了云数据库存储服务,如阿里云、亚马逊云等,这些厂家为数据库的移植和数据安全都提供了导出备份或者下载的功能。
[0003]现有技术中,大部分导出备份或者下载的文件格式都是SQL格式的文件(为方便起见,以下统称SQL文件)。这些SQL文件非常之大,常常超出数十GB、甚至上百GB。这就造成重新导入到数据库中会花费大量时间,更有甚者,如果导入过程中有SQL语句有错,则会导致全部导入失败,下次导入时会从头开始导入,非常耗时,导入的效率低下;而且用户不能自行选择所需部分进行导入,只能全盘导入,导入的灵活性很差。
[0004]例如,现有技术中本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,包括以下步骤:S100:SQL文件的词法分析,包括以下步骤:S101:配置词法分析规则,生成词法分析配置文件:根据SQL词法规则及词法分析器配置规则,配置词法类型的识别规则并生成词法分析配置文件;S102:采用词法分析器,将所述词法分析配置文件生成为可执行文件;S103:采用所述可执行文件,生成词法标记;S200:SQL文件的语法分析:生成语法分析配置文件,采用语法分析器生成SQL文件中各个语句各自所对应的语法结构体对象,其中,SQL文件中所述各个语句包括建库语句、库选择语句、建表语句及插入语句;S300:语法结构持久化:采用所述语法结构体对象,提取数据库结构并存储到JSON文件中;S400:根据所述JSON文件创建关系型数据库,将所获取的文本文件导入至关系型数据库。2.根据权利要求1所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,所述词法分析器为FLEX,所述语法分析器为BISON。3.根据权利要求1所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,所述词法类型包括SQL关键字、用户标记、值标记及符号标记,所述SQL关键字包括创建、插入、删除、表、数据库,所述用户标记为用户自行命名的标记,包括数据库名称、表名、字段名,所述值标记包括字符串值、整型值、浮点数值、十六进制值及二进制值,所述符号标记包括算术运算符号、逻辑运算符号、标点符号及文件结束符号。4.根据权利要求1所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,针对所述词法分析器不能识别/处理的编码及文件编码头,根据不同类型的编码及文件编码头,各自分别剔除/忽略且不生成词法标记。5.根据权利要求1所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,步骤S200包括以下步骤:S201:配置语法分析规则,生成语法分析配置文件:根据SQL语法规则及语法分析器配置规则,配置SQL文件中各个语句的识别规则并生成语法分析配置文件;S202:采用语法分析器,将所述语法分析配置文件生成为可执行文件;S203:将所生成的词法标记传入语法分析器中,用以生产SQL语法结构体对象。6.根据权利要求1所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,所述语法结构持久化包括以下步骤:S301:读取当前语法结构体对象,判断当前语法结构体对象的类型是否为下述类型之一:A.建库语句/库选择语句:则执行步骤S302;B.建表语句:则执行步骤S303;C.插入语句:则执行步骤S304;S302:建库语句/库选择语句的语法结构体对象的持久化,并执行步骤S305;S303:建表语句的语法结构体对象的持久化,并执行步骤S305;S304:插入语句的语法结构体对象的持久化,并将表数据存储到文本文件中,设置文本
文件的大小不超过第一阀值,用以查询/导入,其中,第一阀值为200M字节,执行步骤S305;S305:判断大容量SQL文件中语法结构体对象是否已经读取完毕,如果是,执行步骤S400,否则,执行步骤S306;S306:读取SQL文件中下一语法结构体对象,执行步骤S301。7.根据权利要求6所述的一种针对关系型数据库的大容量SQL文件的导入方法,其特征在于,针对当前语法结构体对象的类型为建库语句/库选择语句,执行以下步骤:S302

1:读取当前语法结构体对象的数据库名称并判断当前数据库名称是否为空字符串,如果是,执行步骤S302

2,否则,执行步骤S302

3;S302

2:读取当前SQL文件名作为数据库名称;S302

3:根据当前数据库名称在JSON结构中查找数据库JSON节点,如果未查找到,执行步骤S302

4,否则,执行步骤S302

5;S302

4:构建数据库JSON节点,当前所构建的JSON节点的数据库配置信息包括数据库ID、数据库名称、表数组节点;S302

【专利技术属性】
技术研发人员:梁效宁雷珂张佳强蒲军
申请(专利权)人:四川效率源信息安全技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1