CN110825739A - 建表语句生成方法、装置、设备及存储介质 - Google Patents

建表语句生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110825739A
CN110825739A CN201911046455.6A CN201911046455A CN110825739A CN 110825739 A CN110825739 A CN 110825739A CN 201911046455 A CN201911046455 A CN 201911046455A CN 110825739 A CN110825739 A CN 110825739A
Authority
CN
China
Prior art keywords
statement
regular expression
building
row
table building
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.)
Granted
Application number
CN201911046455.6A
Other languages
English (en)
Other versions
CN110825739B (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.)
JD Digital Technology Holdings Co Ltd
Jingdong Technology Holding Co Ltd
Original Assignee
JD Digital Technology Holdings Co 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 JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201911046455.6A priority Critical patent/CN110825739B/zh
Publication of CN110825739A publication Critical patent/CN110825739A/zh
Application granted granted Critical
Publication of CN110825739B publication Critical patent/CN110825739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种建表语句生成方法、装置、设备及存储介质,该方法包括:获取第一数据表的第一建表语句和用户输入的分表数量;通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表;输出各个第二建表语句。本发明能够通过正则表达式实现对建表语句中表名的匹配和替换,从而自动高效的生成数据表的分表的建表语句,提高建表语句的生成效率。

Description

建表语句生成方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种建表语句生成方法、装置、设备及存储介质。
背景技术
伴随互联网的高速发展,企业的业务数据成倍增长,原有单个数据表的模式已不满足业务发展的需要,通常需要将业务数据均匀地拆分为多个分表进行存放。在数据拆分存放之前,首先需要编辑分表的建表语句,以便通过建表语句进行分表的创建。
现有技术中,在进行分表的建表语句编辑时,是在单个数据表的建表语句的基础上,以人工的方式对建表语句进行复制和修改,从而形成各个分表的建表语句。
然而现有技术中,由于每个分表的建表语句都需要人工进行复制和修改,当分表数量较大时,分表的建表语句的生成效率较低。
发明内容
本发明实施例提供一种建表语句生成方法、装置、设备及存储介质,以解决分表的建表语句的生成效率低的问题。
第一方面,本发明实施例提供一种建表语句生成方法,包括:
获取第一数据表的第一建表语句和用户输入的分表数量;
通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表;
输出各个第二建表语句。
在一种可能的实施方式中,所述预置的正则表达式包括用于匹配所述第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
在一种可能的实施方式中,所述匹配模块,具体用于:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置;
按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表;
若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行以下步骤:提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
在一种可能的实施方式中,提取所述第一建表语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置,包括:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
在一种可能的实施方式中,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置,包括:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
在一种可能的实施方式中,所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型之后,所述方法还包括:
针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置。
按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段。
在一种可能的实施方式中,所述表名所在行为所述第一建表语句的首行。
在一种可能的实施方式中,输出各个第二建表语句,包括:
将所有第二建表语句写入同一目标文件中;
将所述目标文件存储到预置的,或用户配置的存储路径。
在一种可能的实施方式中,所述获取第一数据表的第一建表语句,包括:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
在一种可能的实施方式中,通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,之前,所述方法还包括:
获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径;
所述匹配模块,具体用于:
根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
在一种可能的实施方式中,输出各个第二建表语句之后,所述方法还包括:
显示各个第二建表语句。
在一种可能的实施方式中,输出各个第二建表语句之后,所述方法还包括:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
第二方面,本发明实施例提供一种建表语句生成装置,包括:
获取模块,用于获取第一数据表的第一建表语句和用户输入的分表数量;
匹配模块,用于通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表;
输出模块,用于输出各个第二建表语句。
在一种可能的实施方式中,所述预置的正则表达式包括用于匹配所述第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
在一种可能的实施方式中,所述匹配模块,具体用于:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置;
按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表;
若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行以下步骤:提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
在一种可能的实施方式中,所述匹配模块,具体用于:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
在一种可能的实施方式中,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
所述匹配模块,具体用于:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
在一种可能的实施方式中,所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式;
所述匹配模块,还用于:
针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置。
按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段。
在一种可能的实施方式中,所述表名所在行为所述第一建表语句的首行。
在一种可能的实施方式中,所述输出模块,具体用于:
将所有第二建表语句写入同一目标文件中;
将所述目标文件存储到预置的,或用户配置的存储路径。
在一种可能的实施方式中,所述获取模块,具体用于:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
在一种可能的实施方式中,所述获取模块,还用于:
获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径;
所述匹配模块,具体用于:
根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
在一种可能的实施方式中,所述装置还包括显示模块,所述显示模块用于:
显示各个第二建表语句。
在一种可能的实施方式中,所述装置还包括创建模块,所述创建模块用于:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
第三方面,本发明实施例提供一种建表语句生成设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的实施方式所述的建表语句生成方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的实施方式所述的建表语句生成方法。
本发明实施例提供的建表语句生成方法、装置、设备及存储介质,通过获取第一数据表的第一建表语句和用户输入的分表数量;通过预置的正则表达式,对第一建表语句中第一数据表的表名进行修改,生成数量为该分表数量的第二建表语句,其中,每个第二建表语句用于生成第一数据表的一个分表;输出各个第二建表语句,能够通过正则表达式实现对建表语句中表名的匹配和替换,从而自动高效的生成数据表的分表的建表语句,提高建表语句的生成效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的建表语句生成方法的流程示意图;
图2为本发明实施例提供的配置界面的示意图;
图3为本发明又一实施例提供的建表语句生成方法的流程示意图;
图4为本发明另一实施例提供的建表语句生成方法的流程示意图;
图5为本发明再一实施例提供的建表语句生成方法的流程示意图;
图6为本发明一实施例提供的建表语句生成装置的结构示意图;
图7为本发明又一实施例提供的建表语句生成装置的结构示意图;
图8为本发明一实施例提供的建表语句生成设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
数据表是数据库中存储数据的文件。建表语句是用于建立数据表的语句。建表语句中可以包括一个数据表的名称、字段、类型、主键、外键和索引等。随着数据量的增加,单个数据表的模式已不满足数据的存储需求,因此需要将数据均匀地拆分为多个分表进行存放。在数据拆分存放之前,首先需要编辑分表的建表语句,以便通过建表语句进行分表的创建。现有技术中,在进行分表的建表语句编辑时,是在单个数据表的建表语句的基础上,以人工的方式对建表语句进行复制和修改,从而形成各个分表的建表语句。然而现有技术中,由于每个分表的建表语句都需要人工进行复制和修改,当分表数量较大时,分表的建表语句的生成效率较低。
本发明实施例能够通过正则表达式实现对建表语句中表名的匹配和替换,从而自动高效的生成数据表的分表的建表语句,提高建表语句的生成效率,并且可以避免由于人工复制修改导致的易出错问题,同时降低人工成本。
图1为本发明一实施例提供的建表语句生成方法的流程示意图。如图1所示,该方法包括:
S101、获取第一数据表的第一建表语句和用户输入的分表数量。
本实施例中,第一建表语句为第一数据表的建表语句。在数据库中执行该第一建表语句可以生成第一数据表。用户需要创建第一数据表的分表时,可以向设备输入第一建表语句和分表数量。其中,设备为上述方法的执行主体,该设备可以为笔记本、台式计算机、平板等,在此不作限定。分表数量是用户需要创建的分表的总数,例如,用户需要创建256个分表,则可以向该设备输入分表数量为256。
可选地,S101可以包括:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
本实施例中,该设备可以包括显示屏,该设备可以在显示屏上显示配置界面。配置界面上包括用于用户上传源文件的第一控件和用于用户输入分表数量的第二控件。如图2所示为本发明实施例提供的配置界面的示意图。参照图2,配置界面20除了包含第一控件21和第二控件22之外,还可以包括显示是否成功生成分表建表语句的提示窗口23,以及控制开始执行的开始控件24。该设备在接收到用户通过第一控件上传的源文件后,可以从源文件中提取出第一建表语句。
S102、通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表。
本实施例中,第二建表语句为第一数据表的分表的建表语句。预置的正则表达式可以为默认的正则表达式,也可以为用户预先配置的正则表达式,在此不作限定。通过正则表达式可以匹配第一建表语句中的第一数据表的表名。由于本实施例提供的方法是要生成第一数据表的分表的建表语句,而每个分表拥有不同于第一数据表的表名,分表的建表语句与第一数据表的建表语句中的表名不相同。因此,可以通过正则表达式匹配出第一建表语句中的表名所在位置,并将第一建表语句中的表名进行替换,从而生成第一数据表的一个分表。经过多次匹配和替换,则可以生成上述分表数量的分表的建表语句。
可选地,预置的正则表达式可以包括用于匹配第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
本实施例中,预置的正则表达式可以包括至少两个:第一正则表达式和第二正则表达式。在匹配过程中,首先通过第一正则表达式对第一建表语句进行匹配,可以匹配得到第一建表语句中的表名所在行,然后通过第二正则表达式对第一建表语句中的表名所在行进行匹配,可以匹配得到第一建表语句中的表名所在位置。
其中,表名所在行位于第一建表语句中的哪一行并不确定,不同数据库中数据表的建表语句的格式不同,相应的,表名所在行也可能不同,因此首先通过第一正则表达式匹配确定第一建表语句中的表名所在行。例如,若第一数据表为SQL(Structured QueryLanguage)数据库中的数据表,则建表语句中的表名所在行为第一建表语句的首行。为便于说明,下面给出一个建表语句的示例,如下:
1 CREATE TABLE`payment_info`(
2 `id`bigint(20)NOT NULL AUTO_INCREMENT COMMENT’主键’,
3 `pin`varchar(100)DEFAULT NULL COMMENT’用户pin’,
4 `pay_id`varchar(100)DEFAULT NULL COMMENT’支付单号’,
5 `rebate_status`int(11)DEFAULT NULL COMMENT’返现状态(1:未返现,3:反现成功,6:返现失败)’,
6 `calc_identity`varchar(10)DEFAULT NULL COMMENT,’返现计算标识(1:已计算,0:未计算)’,
7`createtd_date`datetime DEFAULT NULL COMMENT’创建时间’,
8 `modifietd_date`datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ONUPDATE CURRENT.TIMESrAMP COMMENT,’更新时间’,
9 `yn`int(4)DEFAULT NULL COMMENT’记录有效(0:无效,1:有效)’,
10 `df`int(4)DEFAULT 0COMMENT’删除标记’,
11 `vn`int(11)DEFAULT 0COMMENT’版本号’,
12 PRIMARY KEY(`id`),
13 UNIQUE KEY`uniq_payment_pin_pay_id`(`pin`,`pay_id`)
14 KEY`idx_payment_pin`(`pin`),
15 KEY`idx_payment_rebate_status`(`rebate_status`),
16 KEY`idx_payment_calc_identity`(`calc_identity`),
17 KEY`idx_payment_createtd_date`(`createtd_date`),
18 KEY`idx_payment_yn`(`yn`),
19)ENGINE=InnoDB AUT0_INCREMENT=1DEFAULT CHARSET=utf8C0LLATB=utf8_bin COMMENT=’支付信息表’;
该示例中,第一数据表的表名为“payment_info”,位于第一建表语句的第1行。
针对上述示例,第一正则表达式可以定义如下:
Private static final String CREATE_TABLE_EXPRESSION=”\\s*((CREATE)\\s+(TABLE)\\s+)`[A-Za-z][A-Za-z0-9_]+`\\s*[(]$”;
其中,第一正则表达式为”\\s*((CREATE)\\s+(TABLE)\\s+)`[A-Za-z][A-Za-z0-9_]+`\\s*[(]$”。
第二正则表达式可以定义如下:
Private static final String REPLACE_TABLE_EXPRESSION=”\\`[A-Za-z][A-Za-z0-9_]+`\\s*[(]”
其中,第二正则表达式为”\\`[A-Za-z][A-Za-z0-9_]+`\\s*[(]”。
S103、输出各个第二建表语句。
在本实施例中,可以将每个第二建表语句分别写入到不同的目标文件中进行输出;也可以将所有第二建表语句都写入同一目标文件中。然后将目标文件存储到预置的,或用户配置的存储路径,以便用户可以从该存储路径中读取目标文件,将目标文件中的第二建表语句生成数据库可执行的文件,或者直接复制到数据库的代码运行窗口中运行。其中,在将所有第二建表语句都写入同一目标文件时,可以每生成一个第二建表语句,就将该第二建表语句写入到目标文件中;也可以在生成所有第二建表语句后,一次性将所有建表语句写入到目标文件中,在此不作限定。
本发明实施例通过获取第一数据表的第一建表语句和用户输入的分表数量;通过预置的正则表达式,对第一建表语句中第一数据表的表名进行修改,生成数量为该分表数量的第二建表语句,其中,每个第二建表语句用于生成第一数据表的一个分表;输出各个第二建表语句,能够通过正则表达式实现对建表语句中表名的匹配和替换,从而自动高效的生成数据表的分表的建表语句,提高建表语句的生成效率,并且可以避免由于人工复制修改导致的易出错问题,同时降低人工成本。
可选地,S103之后,上述方法还可以包括:
显示各个第二建表语句。
本实施例中,可以在配置界面或者其他预设的显示界面上显示各个第二建表语句,以便用户查看生成的第二建表语句。
可选地,S103之后,上述方法还可以包括:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
本实施例中,该设备在生成各个第二建表语句后,可以直接根据各个第二建表语句生成建表脚本。在数据库中执行该建表脚本可以创建第一数据表的分表,所创建出的分表的数量即为用户所设置的分表数量。可以通过建表脚本实现对第一数据表的分表的创建。
图3为本发明又一实施例提供的建表语句生成方法的流程示意图。本实施例对通过预置的正则表达式对第一建表语句中第一数据表的表名进行修改的具体实现过程进行了详细说明。如图3所示,该方法包括:
S301、获取第一数据表的第一建表语句和用户输入的分表数量。
本实施例中的S301与图1实施例中的S101类似,此处不再赘述。
S302、提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
本实施例中,可以以循环的方式多次执行S302至S304,直到生成的第二建表语句的数量达到上述分表数量则停止循环,一次循环过程可以生成一个第二建表语句。在一次循环过程中,首先从第一建表语句中提取出其中的各行语句,通过第一正则表达式和第二正则表达式确定出第一建表语句中的表名所在行的表名所在位置,然后将该表名所在位置的字段替换为该次循环中所需生成的分表的表名。可选地,S302可以通过以下两种实现方式中的任一种来实现,下面分别进行说明。
在第一种实现方式中,S302可以包括:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
该实现方式中,在提取到第一建表语句的各行语句之后,将第一正则表达式依次分别与各行语句进行匹配,确定出表名所在行。例如,可以按照行号依次将第一正则表达式与各行语句匹配。在确定出表名所在行之后,针对表名所在行采用第二正则表达式匹配,确定出该行中的表名所在位置。
在第二种实现方式中,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
S302可以包括:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置,包括:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
该实现方式中,第一建表语句中的语句的类型包括四种,分别是表名所在行、普通行、索引行、尾行。其中,表名所在行是指表名所在的行,如上述示例中的第1行。普通行是指定义数据表的表项的行,如上述示例中的第2-12行。索引行是指定义数据表的索引的行,如上述示例中的第13-18行。尾行是指最后一行,如上述示例中的第19行。表名所在行对应于第一正则表达式,索引行对应于第三正则表达式,尾行对应于第四正则表达式。
针对上述示例,第三正则表达式可以定义如下:
Private static final String INDEX_EXPRESSION=”^\\s*((UNIQUE)?\\s?(KEY)\\s+)`[A-Za-z][A-Za-z0-9_]+`\\s*[(]`[A-Za-z][A-Za-z0-9_`]*`[)]”;
其中,第三正则表达式为”^\\s*((UNIQUE)?\\s?(KEY)\\s+)`[A-Za-z][A-Za-z0-9_]+`\\s*[(]`[A-Za-z][A-Za-z0-9_`]*`[)]”。
第四正则表达式可以以尾行中“)”的进行匹配,容易确定,在此不再赘述。
该实现方式中,针对第一建表语句中的每行语句,通过第一正则表达式、第三正则表达式、第四正则表达式识别出该行语句的类型;若匹配成功,则根据与该行语句匹配的正则表达式确定出该行语句的类型,若匹配全部失败,则确定该行语句的类型为普通行。进而确定第一建表语句中各行语句的类型,然后对其中类型为表名所在行的语句采用第二正则表达式匹配出表名所在位置。
S303、按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表。
本实施例中,预设的第一分表命令规则可以为默认的命名规则,或者由用户配置的命名规则。例如,第一分表命名规则可以是在表名末尾添加下划线和数字,形成分表的表名,针对上述示例,第一数据表的表名为“payment_info”,则第一数据表的分表的表名可以依次为payment_info_0,payment_info_1,payment_info_2,……,payment_info_N,其中N为用户配置的分表数量。根据第一分表命名规则可以确定出每次循环过程中所要生成的建表语句对应的分表的表名。
S304、若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行步骤S302。
本实施例中,以当前已生成的第二建表语句的数量判断是否结束循环。若当前已生成的第二建表语句的数量小于用户配置的分表数量,则跳转执行步骤S302,继续生成下一分表;若当前已生成的第二建表语句的数量等于用户配置的分表数量,则结束循环,执行S305。
S305、输出各个第二建表语句。
本实施例中,S305与图1实施例中的S103类似,此处不再赘述。
在通过正则表达式确定表名所在位置时,若第一建表语句中除表名所在行之外的其他行还包含与表名相同的字段,存在将该字段错误匹配为表名所在位置的可能,这样会导致表名替换错误,得到错误的建表语句。为避免该问题,本实施例通过第一正则表达式先确定出第一建表语句中的表名所在行,然后再通过第二正则表达式对表名所在行进行匹配确定表名所在位置。本实施例第二正则表达式只针对表名所在行进行匹配,在其他行也存在与表名相同的字段时,不会错误匹配到其他行,依然能准确匹配出表名所在位置,从而提高生成建表语句的准确率。
图4为本发明另一实施例提供的建表语句生成方法的流程示意图。本实施例中所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式,如图4所示,该方法包括:
S401、获取第一数据表的第一建表语句和用户输入的分表数量。
本实施例中,S401与图1实施例中的S101类似,此处不再赘述。
S402、依次提取所述第一建表语句的各行语句。
S403、针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型。
本实施例中,S402、S403、S405与图1实施例中的S302的第二种实现方式类似,此处不再赘述。
S404、针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置。
本实施例中,索引字段为建表语句中定义索引名称的字段。通过第三正则表达式可以匹配确定第一建表语句中的索引行,然后采用第五正则表达式的对索引行进行匹配,可以确定出索引行中索引所在的位置。如在上述示例中第13-18行为索引行,其中“uniq_payment_pin_pay_id”、“idx_payment_pin”、“idx_payment_rebate_status”、“idx_payment_calc_identity”、“idx_payment_createtd_date”、“idx_payment_yn”均为索引字段。针对该示例,第五正则表达式的形式可以为\\`[A-Za-z][A-Za-z0-9_]+`\\s*[(],与第一正则表达式的形式相同。第五正则表达式可以与第一正则表达式为同一表达式,也可以为不同的表达式,在此不作限定。
S405、针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
S406、按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,并按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表。
本实施例中,第一分表命令规则为确定分表的表名的规则,第二分表命令规则为确定分表的索引名的规则。第一分表命名规则和第二分表命名规则可以相同,也可以不同,在此不作限定。例如,第一分表命名规则和第二分表命名规则可以均为在名称末尾增加下划线和数字的方式形成新的名称。
本实施例中生成第一数据表的分表的建表语句时,不仅修改建表语句中的表名,还修改建表语句中的索引名,使所创建的每个分表有拥有不同的索引名,从而避免不同数据表之间索引的影响。例如,针对上述的第一建表语句的示例,经过表名和索引名替换后形成的某个分表的示例如下:
1 CREATE TABLE`payment_info_0`(
2 `id`bigint(20)NOT NULL AUTO_INCREMENT COMMENT’主键’,
3`pin`varchar(100)DEFAULT NULL COMMENT’用户pin’,
4 `pay_id`varchar(100)DEFAULT NULL COMMENT’支付单号’,
5 `rebate_status`int(11)DEFAULT NULL COMMENT’返现状态(1:未返现,3:反现成功,6:返现失败)’,
6 `calc_identity`varchar(10)DEFAULT NULL COMMENT,’返现计算标识(1:已计算,0:未计算)’,
7 `createtd_date`datetime DEFAULT NULL COMMENT’创建时间’,
8 `modifietd_date`datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ONUPDATE CURRENT.TIMESrAMP COMMENT,’更新时间’,
9 `yn`int(4)DEFAULT NULL COMMENT’记录有效(0:无效,1:有效)’,
10 `df`int(4)DEFAULT 0COMMENT’删除标记’,
11 `vn`int(11)DEFAULT 0COMMENT’版本号’,
12 PRIMARY KEY(`id`),
13 UNIQUE KEY`uniq_payment_pin_pay_id_0`(`pin`,`pay_id`)
14 KEY`idx_payment_pin_0`(`pin`),
15 KEY`idx_payment_rebate_status_0`(`rebate_status`),
16 KEY`idx_payment_calc_identity_0`(`calc_identity`),
17 KEY`idx_payment_createtd_date_0`(`createtd_date`),
18 KEY`idx_payment_yn_0`(`yn`),
19 )ENGINE=InnoDB AUT0_INCREMENT=1DEFAULT CHARSET=utf8C0LLATB=utf8_bin COMMENT=’支付信息表’;
可以看出,第1行中的表名,以及第13-18行中的索引字段均已替换为分表的表名以及索引字段。该分表的表名为“payment_info_0”。
S407、若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行步骤S402。
本实施例中,S407与图3实施例中的S303类似,此处不再赘述。
S408、输出各个第二建表语句。
本实施例中,S408与图1实施例中的S103类似,此处不再赘述。
本实施例通过第五正则表达式匹配确定第一建表语句中的索引行的索引字段,能够在对第一建表语句中分表的表名进行修改的同时,还能对第一建表语句中的索引字段进行修改,使生成的建表语句创建出的分表的索引与第一数据表、其他分表的索引均不相同,防止不同数据表之间索引的相互影响。
图5为本发明再一实施例提供的建表语句生成方法的流程示意图。本实施例对获取第一数据表的第一建表语句和用户输入的分表数量的具体实现过程进行了详细说明。如图5所示,该方法包括:
S501,获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句。
S502,从所述源文件中提取所述第一建表语句。
S503,获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径。
本实施例中,配置界面上除包含用于用户上传源文件的第一控件和用于用户输入分表数量的第二控件之外,还可以包括用于用户输入分表命名规则的第三控件、用于用户输入表征是否对索引行中的索引字段进行替换的指示信息的第四控件、以及用于用户配置目标文件的存储路径的第四控件中的至少一个。用户可以根据需求进行配置,如通过第三控件设置分表命名规则,通过第四控件设置是否进行索引字段的替换,通过第五控件设置目标文件的存储路径。
S504、根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
S505,输出各个第二建表语句。
本实施例中通过提供配置界面,便于用户根据需求设置分表命名规则、是否对索引行中的索引字段进行替换、以及目标文件的存储路径等信息,便于用户对建表语句的生成过程进行相应的设置,提高操作的便捷性。
图6为本发明一实施例提供的建表语句生成装置的结构示意图。如图6所示,该建表语句生成装置60包括:获取模块601、匹配模块602、输出模块603。
获取模块601,用于获取第一数据表的第一建表语句和用户输入的分表数量。
匹配模块602,用于通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表。
输出模块603,用于输出各个第二建表语句。
本发明实施例中获取模块获取第一数据表的第一建表语句和用户输入的分表数量;匹配模块通过预置的正则表达式,对第一建表语句中第一数据表的表名进行修改,生成数量为该分表数量的第二建表语句,其中,每个第二建表语句用于生成第一数据表的一个分表;输出模块输出各个第二建表语句,能够通过正则表达式实现对建表语句中表名的匹配和替换,从而自动高效的生成数据表的分表的建表语句,提高建表语句的生成效率,并且可以避免由于人工复制修改导致的易出错问题,同时降低人工成本。
图7为本发明又一实施例提供的建表语句生成装置的结构示意图。如图7所示,本实施例提供的建表语句生成装置60在图6所示实施例提供的建表语句生成装置的基础上,还可以包括:显示模块604、创建模块605。
可选地,所述预置的正则表达式包括用于匹配所述第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
可选地,所述匹配模块602,具体用于:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置;
按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表;
若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行以下步骤:提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
可选地,所述匹配模块602,具体用于:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
可选地,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
所述匹配模块602,具体用于:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
可选地,所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式;
所述匹配模块602,还用于:
针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置。
按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段。
可选地,所述表名所在行为所述第一建表语句的首行。
可选地,所述输出模块603,具体用于:
将所有第二建表语句写入同一目标文件中;
将所述目标文件存储到预置的,或用户配置的存储路径。
可选地,所述获取模块601,具体用于:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
可选地,所述获取模块,还用于:
获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径;
所述匹配模块602,具体用于:
根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
可选地,所述显示模块604,用于:
显示各个第二建表语句。
可选地,所述创建模块605,用于:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
本发明实施例提供的建表语句生成装置,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
图8为本发明一实施例提供的建表语句生成设备的硬件结构示意图。如图8所示,本实施例提供的建表语句生成设备80包括:至少一个处理器801和存储器802。该建表语句生成设备80还包括通信部件803。其中,处理器801、存储器802以及通信部件803通过总线804连接。
在具体实现过程中,至少一个处理器801执行所述存储器802存储的计算机执行指令,使得至少一个处理器801执行如上的建表语句生成方法。
处理器801的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图8所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上的建表语句生成方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (26)

1.一种建表语句生成方法,其特征在于,包括:
获取第一数据表的第一建表语句和用户输入的分表数量;
通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表;
输出各个第二建表语句。
2.根据权利要求1所述的方法,其特征在于,所述预置的正则表达式包括用于匹配所述第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
3.根据权利要求2所述的方法,其特征在于,所述匹配模块,具体用于:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置;
按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表;
若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行以下步骤:提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
4.根据权利要求3所述的方法,其特征在于,提取所述第一建表语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置,包括:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
5.根据权利要求3所述的方法,其特征在于,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置,包括:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
6.根据权利要求5所述的方法,其特征在于,所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型之后,所述方法还包括:
针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置;
按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段。
7.根据权利要求2所述的方法,其特征在于,所述表名所在行为所述第一建表语句的首行。
8.根据权利要求1所述的方法,其特征在于,输出各个第二建表语句,包括:
将所有第二建表语句写入同一目标文件中;
将所述目标文件存储到预置的,或用户配置的存储路径。
9.根据权利要求1所述的方法,其特征在于,所述获取第一数据表的第一建表语句,包括:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
10.根据权利要求9所述的方法,其特征在于,通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,之前,所述方法还包括:
获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径;
所述匹配模块,具体用于:
根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
11.根据权利要求1-10任一项所述的方法,其特征在于,输出各个第二建表语句之后,所述方法还包括:
显示各个第二建表语句。
12.根据权利要求1-10任一项所述的方法,其特征在于,输出各个第二建表语句之后,所述方法还包括:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
13.一种建表语句生成装置,其特征在于,包括:
获取模块,用于获取第一数据表的第一建表语句和用户输入的分表数量;
匹配模块,用于通过预置的正则表达式,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句,其中,每个第二建表语句用于生成所述第一数据表的一个分表;
输出模块,用于输出各个第二建表语句。
14.根据权利要求13所述的装置,其特征在于,所述预置的正则表达式包括用于匹配所述第一建表语句中表名所在行的第一正则表达式,和用于匹配所述表名所在行中的表名所在位置的第二正则表达式。
15.根据权利要求14所述的装置,其特征在于,所述匹配模块,具体用于:
提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置;
按照预设的第一分表命名规则,将所述表名所在位置的字段替换为所述第一数据表的第一分表的表名,得到所述第一表名对应的第二建表语句,其中,所述第一分表为当前所生成的建表语句对应的分表;
若当前已生成的第二建表语句的数量小于所述分表数量,则跳转执行以下步骤:提取所述第一建表语句的各行语句,并通过所述第一正则表达式和所述第二正则表达式,确定所述第一建表语句中的表名所在行的表名所在位置。
16.根据权利要求15所述的装置,其特征在于,所述匹配模块,具体用于:
提取所述第一建表语句中的各行语句,并将所述第一正则表达式分别与所述第一建表语句中的各行语句进行匹配,确定所述表名所在行;
通过所述第二正则表达式对所述表名所在行进行匹配,确定所述表名所在位置。
17.根据权利要求15所述的装置,其特征在于,所述第一建表语句中的语句的类型包括以下四种:表名所在行、普通行、索引行、尾行;
所述预置的正则表达式还包括用于匹配所述第一建表语句中索引行的第三正则表达式,和用于匹配所述第一建表语句中的尾行的第四正则表达式;
所述匹配模块,具体用于:
依次提取所述第一建表语句的各行语句;
针对所述第一建表语句的每行语句,分别采用所述第一正则表达式、所述第三正则表达式和所述第四正则表达式对该行语句进行匹配,确定该行语句的类型;
针对类型为表名所在行的语句,通过所述第二正则表达式对该语句进行匹配,确定所述表名所在位置。
18.根据权利要求17所述的装置,其特征在于,所述预置的正则表达式还包括用于匹配所述索引行中索引字段所在位置的第五正则表达式;
所述匹配模块,还用于:
针对类型为索引行的语句,通过所述第五正则表达式对该语句进行匹配,确定所述索引字段所在位置;
按照预设的第二分表命名规则,将所述索引字段所在位置的字段替换为所述第一数据表的第一分表的索引字段。
19.根据权利要求14所述的装置,其特征在于,所述表名所在行为所述第一建表语句的首行。
20.根据权利要求13所述的装置,其特征在于,所述输出模块,具体用于:
将所有第二建表语句写入同一目标文件中;
将所述目标文件存储到预置的,或用户配置的存储路径。
21.根据权利要求13所述的装置,其特征在于,所述获取模块,具体用于:
获取用户在配置界面上选择上传的源文件,其中,所述源文件中包含所述第一建表语句;
从所述源文件中提取所述第一建表语句。
22.根据权利要求13所述的装置,其特征在于,所述获取模块,还用于:
获取用户在所述配置界面上输入的配置信息,其中,所述配置信息包括以下中的至少一种:分表命名规则、表征是否对索引行中的索引字段进行替换的指示信息、目标文件的存储路径;
所述匹配模块,具体用于:
根据预置的正则表达式和所述配置信息,对所述第一建表语句中所述第一数据表的表名进行修改,生成数量为所述分表数量的第二建表语句。
23.根据权利要求13-22任一项所述的装置,其特征在于,所述装置还包括显示模块,所述显示模块用于:
显示各个第二建表语句。
24.根据权利要求13-22任一项所述的装置,其特征在于,所述装置还包括创建模块,所述创建模块用于:
根据各个第二建表语句,生成创建第一数据表的分表的建表脚本,并在数据库中执行所述建表脚本,得到所述第一数据表的所述分表数量的分表。
25.一种建表语句生成设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-12任一项所述的建表语句生成方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-12任一项所述的建表语句生成方法。
CN201911046455.6A 2019-10-30 2019-10-30 建表语句生成方法、装置、设备及存储介质 Active CN110825739B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911046455.6A CN110825739B (zh) 2019-10-30 2019-10-30 建表语句生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911046455.6A CN110825739B (zh) 2019-10-30 2019-10-30 建表语句生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110825739A true CN110825739A (zh) 2020-02-21
CN110825739B CN110825739B (zh) 2021-07-16

Family

ID=69551393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911046455.6A Active CN110825739B (zh) 2019-10-30 2019-10-30 建表语句生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110825739B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949550A (zh) * 2020-08-31 2020-11-17 平安国际智慧城市科技股份有限公司 自动生成测试数据的方法、装置、设备及存储介质
CN113591447A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 数据表的创建方法、装置、设备及存储介质

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097597A1 (en) * 2001-11-16 2003-05-22 Lewis John Ervin System and method for password protecting a distribution list
US20040230618A1 (en) * 2003-05-12 2004-11-18 Wookey Michael J. Business intelligence using intellectual capital
US20060085389A1 (en) * 2004-08-26 2006-04-20 Sensory Networks, Inc. Method for transformation of regular expressions
US20070016558A1 (en) * 2005-07-14 2007-01-18 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
CN101339500A (zh) * 2008-05-22 2009-01-07 清华大学 基于xml模式的数据绑定应用程序接口生成方法
CN101566986A (zh) * 2008-04-21 2009-10-28 阿里巴巴集团控股有限公司 联机事务处理中的数据处理方法和装置
CN101770503A (zh) * 2009-12-31 2010-07-07 深圳联友科技有限公司 一种文件打包解包的方法
CN101895517A (zh) * 2009-05-19 2010-11-24 北京启明星辰信息技术股份有限公司 一种脚本语义提取方法和提取装置
CN101894348A (zh) * 2010-07-20 2010-11-24 中兴通讯股份有限公司 一种自扩展的联机交易系统及其实现方法
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法
CN102541997A (zh) * 2011-11-23 2012-07-04 苏州阔地网络科技有限公司 一种自动分库的数据库执行方法及系统
CN102693295A (zh) * 2012-05-15 2012-09-26 北京天威诚信电子商务服务有限公司 一种基于记录逻辑表示的数据库记录数据查询系统
CN102693310A (zh) * 2012-05-28 2012-09-26 无锡成电科大科技发展有限公司 一种基于关系数据库的资源描述框架查询方法和系统
CN102722542A (zh) * 2012-05-23 2012-10-10 无锡成电科大科技发展有限公司 一种资源描述框架图模式匹配方法
CN102867071A (zh) * 2012-10-19 2013-01-09 烽火通信科技股份有限公司 一种网管海量历史数据管理方法
CN102917020A (zh) * 2011-09-24 2013-02-06 国网电力科学研究院 一种基于数据包的移动终端与业务系统数据同步的方法
CN103365881A (zh) * 2012-03-30 2013-10-23 腾讯科技(深圳)有限公司 基于数据特征的数据存取方法及系统
CN103810212A (zh) * 2012-11-14 2014-05-21 阿里巴巴集团控股有限公司 一种数据库索引的自动创建方法及系统
US20170031908A1 (en) * 2015-07-30 2017-02-02 Futurewei Technologies, Inc. Efficient parallel insertion into an open hash table
US20170364556A1 (en) * 2016-06-15 2017-12-21 International Business Machines Corporation Cardinality estimation of a join predicate
CN107729526A (zh) * 2017-10-30 2018-02-23 清华大学 一种文本结构化的方法
CN109697068A (zh) * 2017-10-24 2019-04-30 中移(苏州)软件技术有限公司 一种分库分表模式下逻辑sql语句翻译方法和装置

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097597A1 (en) * 2001-11-16 2003-05-22 Lewis John Ervin System and method for password protecting a distribution list
US20040230618A1 (en) * 2003-05-12 2004-11-18 Wookey Michael J. Business intelligence using intellectual capital
US20060085389A1 (en) * 2004-08-26 2006-04-20 Sensory Networks, Inc. Method for transformation of regular expressions
US20070016558A1 (en) * 2005-07-14 2007-01-18 International Business Machines Corporation Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table
CN101566986A (zh) * 2008-04-21 2009-10-28 阿里巴巴集团控股有限公司 联机事务处理中的数据处理方法和装置
CN101339500A (zh) * 2008-05-22 2009-01-07 清华大学 基于xml模式的数据绑定应用程序接口生成方法
CN101895517A (zh) * 2009-05-19 2010-11-24 北京启明星辰信息技术股份有限公司 一种脚本语义提取方法和提取装置
CN101770503A (zh) * 2009-12-31 2010-07-07 深圳联友科技有限公司 一种文件打包解包的方法
CN101894348A (zh) * 2010-07-20 2010-11-24 中兴通讯股份有限公司 一种自扩展的联机交易系统及其实现方法
CN102917020A (zh) * 2011-09-24 2013-02-06 国网电力科学研究院 一种基于数据包的移动终端与业务系统数据同步的方法
CN102541997A (zh) * 2011-11-23 2012-07-04 苏州阔地网络科技有限公司 一种自动分库的数据库执行方法及系统
CN102542071A (zh) * 2012-01-17 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式处理数据的系统及方法
CN103365881A (zh) * 2012-03-30 2013-10-23 腾讯科技(深圳)有限公司 基于数据特征的数据存取方法及系统
CN102693295A (zh) * 2012-05-15 2012-09-26 北京天威诚信电子商务服务有限公司 一种基于记录逻辑表示的数据库记录数据查询系统
CN102722542A (zh) * 2012-05-23 2012-10-10 无锡成电科大科技发展有限公司 一种资源描述框架图模式匹配方法
CN102693310A (zh) * 2012-05-28 2012-09-26 无锡成电科大科技发展有限公司 一种基于关系数据库的资源描述框架查询方法和系统
CN102867071A (zh) * 2012-10-19 2013-01-09 烽火通信科技股份有限公司 一种网管海量历史数据管理方法
CN103810212A (zh) * 2012-11-14 2014-05-21 阿里巴巴集团控股有限公司 一种数据库索引的自动创建方法及系统
US20170031908A1 (en) * 2015-07-30 2017-02-02 Futurewei Technologies, Inc. Efficient parallel insertion into an open hash table
US20170364556A1 (en) * 2016-06-15 2017-12-21 International Business Machines Corporation Cardinality estimation of a join predicate
CN109697068A (zh) * 2017-10-24 2019-04-30 中移(苏州)软件技术有限公司 一种分库分表模式下逻辑sql语句翻译方法和装置
CN107729526A (zh) * 2017-10-30 2018-02-23 清华大学 一种文本结构化的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949550A (zh) * 2020-08-31 2020-11-17 平安国际智慧城市科技股份有限公司 自动生成测试数据的方法、装置、设备及存储介质
CN111949550B (zh) * 2020-08-31 2024-02-06 深圳赛安特技术服务有限公司 自动生成测试数据的方法、装置、设备及存储介质
CN113591447A (zh) * 2021-07-30 2021-11-02 高途教育科技集团有限公司 数据表的创建方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110825739B (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
CN109254992B (zh) 项目生成方法及系统、计算机系统和计算机可读存储介质
CN108762743B (zh) 一种数据表操作代码生成方法及装置
US9098500B1 (en) Revision history storage and maintenance
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN110825739B (zh) 建表语句生成方法、装置、设备及存储介质
US9817887B2 (en) Universal text representation with import/export support for various document formats
US10275234B2 (en) Selective bypass of code flows in software program
CN108256716B (zh) 基于表来配置/执行流程和/或原子流程的方法和设备
CN110275712B (zh) 一种文本替换方法、装置及设备
US11182375B2 (en) Metadata validation tool
CN114764558A (zh) 一种sql方言转换方法、装置、系统及存储介质
WO2020024778A1 (zh) xml文件批量修改方法、系统、设备和计算机可读存储介质
US11977473B2 (en) Providing a pseudo language for manipulating complex variables of an orchestration flow
CA3148074A1 (en) Text information extracting method, device, computer equipment and storage medium
CN113901025A (zh) 数据库管理方法、装置、设备和存储介质
WO2020166397A1 (ja) 校閲方法、情報処理装置および校閲プログラム
WO2021042532A1 (zh) 数据库信息分析方法、装置、计算机装置及存储介质
EP3255558A1 (en) Syntax analyzing device, learning device, machine translation device and recording medium
CN114386374A (zh) 一种将CA签名用于数据整合生成odf文档的方法及其程序
CN111159162A (zh) 数据库配置方法及设备
WO2020228183A1 (zh) 代码处理方法、装置、计算机设备和存储介质
CN114282550B (zh) 一种实现qt多语言翻译系统的方法、装置及相关组件
CN116661794B (zh) 一种硬件描述语言语义转换方法及装置
CN115499520B (zh) 接口控制文件更新方法、装置、电子设备及存储介质
US20240232144A1 (en) Systems and methods for automated data dictionary generation and validation

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee before: Jingdong Digital Technology Holding Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Patentee after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Patentee before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.