CN113792027A - 一种通用型数据库转换装置 - Google Patents
一种通用型数据库转换装置 Download PDFInfo
- Publication number
- CN113792027A CN113792027A CN202110968933.XA CN202110968933A CN113792027A CN 113792027 A CN113792027 A CN 113792027A CN 202110968933 A CN202110968933 A CN 202110968933A CN 113792027 A CN113792027 A CN 113792027A
- Authority
- CN
- China
- Prior art keywords
- database
- design
- file
- module
- design file
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file 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/24—Querying
- G06F16/242—Query formulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通用型数据库转换装置,包括创建数据库模块、解析模块和逆向模块,创建数据库模块接收编辑好的数据库设计文件,调用解析模块逐行解析数据库设计文件中的设计语句并生成对应的SQL语句,执行所述SQL语句创建数据库对象,逆向模块将目标数据库逆向生成为数据库设计文件。本发明的装置能够兼容多种数据库类型,在创建数据库时,可重复执行,能够自动判定数据库对象是否存在,对已存在的不再进行创建,以避免执行出错。从实例数据库可转化为设计文档,通过原始设计与逆向生成的文档二者比较,从而进一步实现各行业数据标准贯彻的检查。从而提高了创建数据库的效率,也减小了维护成本。
Description
技术领域
本申请属于数据库技术领域,尤其涉及一种通用型数据库转换装置。
背景技术
基于数据库运行的应用软件,有些可能需要支持多种不同的数据库类型,常见的数据库类型有ORACLE、DB2、MYSQL、SQLSERVER等。开发团队通常会先完成数据库设计,并为每一种数据库类型建立一套数据结构创建的语句,这些代码逻辑相同,但不同类型数据库的语法并不相同,因此创建数据结构的语句需要维护多份。在上线后的运维过程中,常常需要扩展或修改数据库表结构,这些代码容易出现不一致,导致软件测试的工作量较大。由于修改数据库结构的动作具有不可重复、技术要求高的特点,操作风险较大,因操作失误造成核心系统数据丢失的情况屡屡发生。为了规避风险,运维人员在升级时甚至会采取按设计逐条比对和更新数据库对象。
当建立新的项目时,需确保系统软件与数据库结构相匹配。此时,项目团队通常会先采用“按设计初始化”的方式来创建数据库结构,但往往因开发人员多、开发周期长导致数据库设计与实际执行的代码存在差异,那么数据结构与软件的源代码就会不匹配,造成软件运行错误,测试和修改周期长。
软件开发团队在开发应用软件时,在数据库设计环节,通常会使用(以下简称PD)建模,形成PDM文件。设计好后,用之生成文档和能在数据库中生成创建表的SQL语句,能够完成“开发、部署、上线运行”三个阶段。但在“运维阶段”会暴漏出一些弊端,即随着新需求出现,需要经常性地修改数据库结构,如“增加字段、表”等数据库对象。开发和运维团队通常靠人工修改或编制SQL语句来改变数据库结构。而这些SQL文件通常由于晦涩难懂、不能重复执行、已登记到PDM文件等原因遭到丢弃。经过一段时间后,PDM文件与更新的SQL文件与实际的业务数据库很可能会出现不一致,提高了项目运维的难度。当再有新的项目出现时,按PDM文件创建的数据库结构不能与系统软件相匹配,修正过程费时费力。为了确保二者相匹配,有时会采用“恢复项目数据库+清除业务数据”的方式来完成初始化数据库工作,同样会造成设计与实际出现偏差。
因此PD适合设计数据库结构,并不适合在软件产品上线后的升级维护阶段持续使用。因为PD虽然可以评估数据库设计与数据库实例的差异,并输出重建代码,但代码中存在风险较大的删除语句;若选择不输出删除语句而输出代码,会由于数据库对象已存在等原因而不能顺畅执行,导致升级和运维的难度增大。所以当碰到此场景时,升级运维人员会对数据库更新记录逐条比对和执行,耗时长且容易操作失误,存在数据丢失的重大风险。因此除了PDM文件外,还需要额外配合SQL文件,而SQL文件的数量会随着运维时间的推移变得越来越多。比如同一套软件系统有10个项目,分别使用4种不同种类的数据库(如4个db2,3个oracle,2个mss,1个mysql),之后每个项目平均每年有需要5次增加字段,1次增加10个字段时(即使假设此10个客户所增加的字段完全一样),PD并不能将这5次的变化记录下来并完全生成到数据库中,而是靠人工维护类似“alter table add…”的SQL语句,4种数据库就需要维护1年20个修订SQL文件。由于文件多,发生错误的概率也大大提升。
这些SQL文件通常由于晦涩难懂、不能重复执行而极易导致遗失。过不了多久,PDM文件与实际的业务数据库可能出现不一致。造成一但再有新的工程出现,按PDM文件创建的数据库结构不能与系统软件相匹配,修正过程费时费力,降低了代码的复用性。所以PD能够很好地展现数据库设计成果,适用于一个团队开发新软件项目,但不能适应在软件产品上线后的升级维护。
发明内容
本申请的目的是提供一种通用型数据库转换装置,以克服现有技术在创建数据库与数据库维护时需要较高成本的问题。
为了实现上述目的,本申请技术方案如下:
一种通用型数据库转换装置,用于数据库的创建和维护,包括:
创建数据库模块,用于接收编辑好的数据库设计文件,调用解析模块逐行解析数据库设计文件中的设计语句并生成对应的SQL语句,执行所述SQL语句创建数据库对象;
解析模块,用于接受所述创建数据库模块的调用解析数据库设计文件中的设计语句并生成对应的SQL语句;
逆向模块,用于将目标数据库逆向生成为数据库设计文件。
进一步的,所述通用型数据库转换装置,还包括:
差异报告模块,用于生成数据库与数据库设计文件之间的差异报告。
进一步的,所述创建数据库模块,执行如下操作:
连接数据库;
读取数据库设计文件,从数据库设计文件中按行读取设计语句;
调用解析模块解析设计语句并生成数据库对应的SQL语句,从解析模块获取所生成的SQL语句;
在执行所生成的SQL语句时先判定对应的数据库对象是否存在,如果存在则跳过,如果不存在则在数据库中执行并提交;
判断是否到达文件尾,如果到达文件尾,则结束创建并弹出完成对话框,否则继续从数据库设计文件中按行读取设计语句并解析执行。
进一步的,所述创建数据库模块,还执行如下操作:
检查数据库设计文件中的数据库对象是否与数据库类型兼容,若不兼容,则发出预警。
进一步的,所述通用型数据库转换装置,还预先配置有各个数据库类型对应的数据库设计文件中数据类型与创建的数据库中的数据类型关系列表,所述解析模块按照所述关系列表转换对应的数据类型,生成与数据库类型相匹配的SQL语句。
进一步的,所述逆向模块,执行如下操作:
连接目标数据库;
从数据库的系统表中获取数据库对象清单;
根据获取的对象清单,生成对应的数据库设计文件。
本申请提出的一种通用型数据库转换装置,能够兼容多种数据库类型,在创建数据库时,可重复执行,能够自动判定数据库对象是否存在,对已存在的不再进行创建,以避免执行出错。具备数据标准贯彻的检查功能,在兼容多种数据库的前提下,具备数据库实例与数据库设计文档之间的双向转换和比对功能。从实例数据库可转化为设计文档,通过原始设计与逆向生成的文档二者比较,从而进一步实现各行业数据标准贯彻的检查。从而提高了创建数据库的效率,也减小了维护成本。
附图说明
图1为本申请通用型数据库转换装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请提供的一种通用型数据库转换装置,用户数据库的创建和维护,如图1所示,包括:
创建数据库模块,用于接收编辑好的数据库设计文件,调用解析模块逐行解析数据库设计文件中的设计语句并生成对应的SQL语句,执行所述SQL语句创建数据库对象;
解析模块,用于接受所述创建数据库模块的调用解析数据库设计文件中的设计语句并生成对应的SQL语句;
逆向模块,用于将目标数据库逆向生成为数据库设计文件。
本申请通用型数据库转换装置,主要用于数据库的创建和维护。在使用本装置之前,需要编辑好数据库设计文件,然后再采用本装置导入该数据库设计文件,进行数据库的创建。
编辑数据库设计文件,首先定义一套数据库描述语法,采用该语法来编辑数据库设计文件。本实施例中将该语法称为CT语法(Create Table)。
然后,采用本申请的通用型数据库转换装置,导入编辑好的数据库设计文件,解析执行,在数据库上自动建立数据库对象。对象包括表、主键、外键、索引、视图、存储过程、函数、触发器、序列、程序包、程序包体和初始数据。本申请CT语法特征对表名、字段名拥有更易读且不可或缺的说明描述;对主键、外键有明确的名称;有初始化数据的描述。符合CT语法的设计文件可通过本申请通用型数据库转换装置(也称为CT工具)进行解析,在数据库中创建数据库对象。
本申请CT语法采用“行+列”的表格式描述。“行”以回车符分隔;列以Tab符分隔。编辑的数据库设计文件(也称为CT文件)支持文本文件(TXT)和EXCEL两种格式。如果是文本文件(TXT),各列之间采用一个且仅一个TAB符分割;如果是EXCEL,按列描述即可。
在执行创建的过程中,通用型数据库转换装置会自动比对设计文件与数据库现状的差异,分析出待补充的表和字段、索引、数据等,接下来进行补充创建,过程中不会删除任何对象。即使重复多次执行,也不会对现有数据库造成损伤。
在编辑数据库设计文件时,在设计文件中输入需要建立的数据库对象信息,所述信息包括:表名称、表说明、字段名称、字段类型、字段说明、字段是否允许为空、主键、外键、索引、视图、序列、存储过程、函数、初始数据和校验规则。这些信息应符合CT语法规则。
例如需要建立三张表“单位信息表”和“个人信息表”和“个人状态枚举”,并分别建立“单位账号”和“个人账号”为主键,再建立二者的主外键关联关系,最后初始化个人状态枚举数据,输入内容如下:
CREATETABLE T_DWXX单位信息表DWZH
DWZH单位账号VARCHAR(20)N
DWMC单位名称VARCHAR(200)N
DWDZ单位地址VARCHAR(200)Y
DWDH单位电话VARCHAR(20)Y
END
CREATETABLE T_GRXX个人信息表DWZH,GRDM
DWZH单位账号VARCHAR(20)N T_DWXX.DWZH
GRDM个人代码NUMERIC(18,0)N
XM姓名VARCHAR(120)N
XB性别(LIST1|男/2|女/)INT Y
ZT状态(SELECT ID,CCODE,ZTSM FROM T_ZT ORDER BY CCODE)Y T_ZT.ID
KHRQ开户日期DATETIME Y
END
CREATETABLE T_ZT个人状态枚举ID
ID枚举代码INT N
CCODE编号VARCHAR(2)N
ZTSM状态说明VARCHAR(20)N
END
//初始状态枚举数据,使用@TABLENAME关键字代表T_ZT表,使用@PREFIX代表SQL前缀
INITDATA T_ZT SELECT COUNT(*)FROM@TABLENAMEINSERT INTO T_ZT(ID,CCODE,ZTSM)VALUES
@PREFIX(1,'01','正常');
@PREFIX(2,'02','封存');
END
在需要根据数据库设计文件来创建数据库实例时,先打开CT工具,选择数据库设计文件,开始创建,执行成功后会有完成提示,具体创建过程如下:
连接数据库;
读取数据库设计文件,从数据库设计文件中按行读取设计语句;
调用解析模块解析设计语句并生成数据库对应的SQL语句,从解析模块获取所生成的SQL语句;
在执行所生成的SQL语句时先判定对应的数据库对象是否存在,如果存在则跳过,如果不存在则生成对应的SQL语句并在数据库中执行并提交;
判断是否到达文件尾,如果到达文件尾,则结束创建并弹出完成对话框,否则继续从数据库设计文件中按行读取设计语句并解析执行。
具体的,连接数据库并记录当前数据库类型,读取存放CT文件的目录,列出扩展名为txt或xls、xlsx的文件,识别为待执行的CT文件,此过程可以预先由用户在清单中指定一个或多个CT文件;按文件清单循环打开文件,如果文件扩展名是xls或xlsx则先另存为文本文件。
按行读取CT文件中的设计语句,并按行解析执行,解析内容为普通创建类语法单元时,生成判定类的语句和创建类的语句;解析内容为“验证数据”语法单元时,生成验证类的语句和不满足验证规则时所提示的信息。
如果该行前两个字符是“--”或“//”则表示注释,继续读取下一行。
将行数据按tab分隔符分解为多列,判定第一列内容,若与CT语法单元关键词相匹配,则按该单元的规则执行,以此类推。若与CT语法单元关键词不匹配,则跳过本行继续读取下一行。
当进入某个语法单元,每个语法单元会继续对CT文件进行行读取,直至出现行读内容为“END”表示该语法单元结束。
在执行的过程中,根据语法单元的特性,判定语法单元所述的数据库对象是否存在,如果存在则跳过,如果不存在则生成对应的SQL语句并在数据库中执行并提交。
在执行所生成的SQL语句的过程中,如果碰到数据库报错则预警提示;碰到解析模块中的“验证数据”步骤中生成预警信息时也进行预警提示。
本申请解析模块,可以解析的语法单元具体举例如下:
1)、按CT文件中的“创建表”描述,按当前数据库类型生成判定表是否存在和创建表的SQL语句,生成过程涉及字段数据类型时,按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的直接取CT文件描述的字段类型;
2)、按CT文件中的“更改表”描述,按当前数据库类型生成判定字段是否存在和补充字段的SQL语句,生成过程涉及字段数据类型时,按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的直接取CT文件描述的字段类型;
3)、按CT文件中的“更改字段类型”描述,按当前数据库类型生成判定字段类型是否相符和更改字段类型的SQL语句;
4)、按CT文件中的“创建表”和“创建主键”描述,按当前数据库类型生成判定主键是否存在和创建主键的SQL语句;
5)、按CT文件中的“创建表”和“创建外键”描述,按当前数据库类型生成判定外键是否存在和创建外键的SQL语句;
6)、按CT文件中的“创建索引”描述,按当前数据库类型生成判定索引是否存在和创建索引的SQL语句;
7)、按CT文件中的“创建视图”描述,按当前数据库类型生成判定视图是否存在和创建视图的SQL语句,生成过程按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的单词直接取CT文件描述的字段类型;
8)、按CT文件中的“创建存储过程”描述,按当前数据库类型生成判定存储过程是否存在和创建存储过程的SQL语句,生成过程按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的单词直接取CT文件描述的字段类型;
9)、按CT文件中的“创建函数”描述,按当前数据库类型生成判定函数是否存在和创建函数的SQL语句,生成过程按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的单词直接取CT文件描述的字段类型;
10)、按CT文件中的“创建序列”描述,按当前数据库类型生成判定序列是否存在和创建序列的SQL语句;
11)、按CT文件中的“创建触发器”描述,按当前数据库类型生成判定触发器是否存在和创建触发器的SQL语句;
12)、按CT文件中的“创建程序包”描述,按当前数据库类型生成判定程序包和程序体是否存在和创建程序包和程序体的SQL语句;
13)、按CT文件中的“创建其它对象”描述,按当前数据库类型生成判定其它对象是否存在和创建其它对象的SQL语句;
14)、按CT文件中的“创建数据”描述,按当前数据库类型生成判定数据是否存在和插入数据的SQL语句,生成过程按不同数据库类型匹配关系列表进行解析,匹配关系列表中未列举的单词直接取CT文件描述的字段类型;
15)、按CT文件中的“验证数据”描述,按当前数据库类型生成执行验证逻辑的SQL语句,和当违反规则时进行警告的信息。
在一个具体的实施例中,本实施例通用型数据库转换装置,还预先配置有各个数据库类型对应的数据库设计文件中数据类型与创建的数据库中的数据类型关系列表,所述解析模块按照所述关系列表转换对应的数据类型,生成与数据库类型相匹配的SQL语句。
例如,以数据库ORACLE为例,预先配置有对应的数据库设计文件中数据类型与创建的数据库中的数据类型关系列表如下:
表1
同样的,对于其他数据库类型,也设置有对应的关系表,这里不再赘述。在解析的过程中,需要根据不同种的数据库类型生成SQL语句,而此转换过程在CT工具中设计成灵活配置,按照所述关系列表转换对应的数据类型,生成与数据库类型相匹配的SQL语句。在运行CT文件时,按此配置进行转换,以实现CT工具数据库类型转换的灵活性。
需要说明的是,除以上数据类型外,CT工具依然支持所有类型数据库的特殊数据类型。若执意采用那些特殊数据类型,CT工具依然能够在既定的数据库类型场景中正常执行,仅会产生有可能不兼容其它数据库的弊端而已。
在另一个具体的实施例中,本实施例通用型数据库转换装置,还包括:
差异报告模块,用于生成数据库与数据库设计文件之间的差异报告。
本实施例差异报告模块,能够出具数据库设计与数据库实例的差异报告,以便快速实现数据库结构的检查和评估。根据差异报告,可自动将缺少的表、字段等对象补充创建,而避免删除对象,更不能删除数据,不会对数据库造成损伤。决定采用该工具来管理数据库后,应规定数据库的设计和创建流程应该严格以该语法和工具作为唯一途径,以确保数据库设计与数据库实例相一致,并能通过工具来检查其一致性。
在另一个具体的实施例中,所述创建数据库模块,还执行如下操作:
检查数据库设计文件中的数据库对象是否与数据库类型兼容,若不兼容,则发出预警。
本实施例在创建数据库对象前,能够自动检查设计文件中的数据库关键字,以确保数据库设计结果能够兼容多种数据库类型。检查的数据类型覆盖当前主流的数据库类型。为满足多数据兼容的要求,应将目前市面上能够列出的数据库关键字进行收集,并在工具中执行CT创建时自动判定是否使用了数据库关键字,从而及时提醒设计者规避此问题。并且在数据库关键字的收集环节,应具有可扩展性,在工具中采用“散养”方式存放,以便于关键字的采集和使用,即在工具中采用文本文件存放,单词之间用空格和回车符间隔,且允许重复。
此外,本申请根据数据库实例,可逆向生成符合该语法的数据库设计文件,包括表结构、初始数据等,以便在已建项目中快速启用该语法和工具。
本申请逆向模块,具体执行如下操作:
连接目标数据库;
获取数据库的系统表中获取对象清单;
根据获取的对象清单,生成对应的数据库设计文件。
具体的,连接数据库后记录当前数据类型,点击“将数据库逆向生成TXT”,即可反向生成CT文件。当只需要生成部分表的CT文件时,可通过“指定表”功能来选择部分表。
具体步骤是,连接数据库,从数据库的系统表中获取表清单、字段清单、主键清单、外键清单、索引清单、视图清单、存储过程清单和函数清单,不同的数据库类型的系统表不同。然后生成对应的CT文件。
例如,生成“建立表”的CT文件,具体过程为:
1)、若是ORACLE、达梦、UPDB数据库,按表清单取出表说明,存放在系统表“user_tab_comments”中;若是其他数据库,以英文表名做为表说明;
2)、取出各表的主键清单,按“CREATETABLE、表名、表说明、主键字段”的顺序生成字符串,各列间用“TAB符”分隔;
3)、取出各表的字段清单,循环获得各字段的数据类型、字段说明,并按“英文名、中文说明、字段类型、是否允许为空”的顺序生成字符串,各列间用“TAB符”分隔。
4)、取出各表的外键清单,依次对应各字段,在上述字段描述后面加一列有关外键的描述,即可“本字段做为外键关联的主键表名.字段名”;
5)、为每个表拼接单独一行“END”做为结束符;
6)、将表和字段、主键、外键的描述写入文件“RCT_TABLE.TXT”。
又例如,生成“建立索引”的CT文件,具体过程为:
1)、取出各表的索引清单,生成“CREATEINDEX、表名、索引名、是否唯一”的顺序生成字符串,各列间用“TAB符”分隔;
2)、取出各索引的表字段清单,用半角逗号分隔,拼接成字符串;
3)、为每个索引拼接单独一行“END”做为结束符;
4)、将表和字段、主键、外键的描述写入文件“RCT_TABLE_INDEX.TXT”。
又例如,生成“建立视图”的CT文件,具体过程为:
1)、取出各视图清单,生成“CREATEVIEW、视图名、说明、特指数据库类型”的顺序生成字符串,各列间用“TAB符”分隔;其中“说明”仅在ORACLE、达梦、UPDB数据库时取系统表“user_tab_comments”的说明;若是其他数据库,以英文表名做为视图说明;
2)、拼接各视图的创建语句;
3)、为每个视图拼接单独一行“END”做为结束符;
4)、将视图描述写入文件“RCT_TABLE_VIEW.TXT”。
又例如,生成“建立数据”的CT文件,具体过程为:
1)、循环取各表清单,获取各表的字段清单,拼接成以半角逗号分隔的字符串(拼接时需要判定各字段的数据类型,如果是二进制大对象则不做拼接);
2)、按“INITDATA、表名、INSERT INTO(字段清单字符串)VALUES”的顺序生成字符串,各列间用“TAB符”分隔;
3)、通过拼接SQL语句“SELECT*FROM表名”获取全量数据;
4)、按各行、各列的顺序获取数据,并拼接成字符串。拼接时按各字段的数据类型不同而进行不同拼接方式:数值型的转换为字符串直接拼接,字符串型的拼接时在收尾分别增加一个单引号,日期型的采用“@2D(数据)”的方式进行拼接,二进制大对象不做拼接;
5)、按行生成数据的描述“@PREFIX(行数据)”;
6)、为每个表数据拼接单独一行“END”做为结束符;
7)、将数据描述写入文件“RCT_TABLE_DATA.TXT”。
本申请设计文件与可用于执行内容集于一体,显著特征是表和字段的英文名与中文名在同一行显示,各列内容之间有明显的分隔符,并采用必填手段来规范数据库设计。在执行数据库同步时可重复执行,能够自动判定数据库对象是否存在,对已存在的不再进行创建,以避免执行出错。除非特别注明,通常情况下在创建过程不对数据库对象和数据进行删除修改,以避免数据库的损伤。因此具备在已上线运行的生产库执行同步的条件。具备数据标准贯彻的检查功能,在兼容多种数据库的前提下,具备数据库实例与数据库设计文档之间的双向转换和比对功能。从实例数据库可转化为设计文档,通过原始设计与逆向生成的文档二者比较,并出具报告,从而进一步实现各行业数据标准贯彻的检查。
本申请CT工具相比PD(PowerDesigner)工具的优势:
CT工具具备初始数据的创建功能,能够兼容多种数据库类型。这极大地方便了定义数据字典、枚举等初始数据,是数字化转型时代在数据结构设计环节所必备的。而PD未考虑初始数据的创建功能。
PD功能丰富但会导致使用安全系数降低,由数据库实例生成的SQL创建语句默认带有删除(DROP)命令,仅用于初始化数据结构,而不能用于同步生产环境中的数据库结构。如果强行用于同步生产环节的数据库,极容易产生误操作。用户正式的生产数据安全性极其重要,不可容一点损伤,由PD根据数据库实例生成的SQL文件不能直接对正式的产生数据库执行,操作风险非常大。而通过人工检查和修订的过程非常复杂,工作量较大,误操作的概率较大。而CT工具功能相对明确单一,只有增加和补充功能,默认不具备删除功能,在使用过程中的数据安全得以保障。
CT工具可以重复执行。若第一次同步不成功,可修正后再次重复执行。而PD由数据库实例生成的SQL创建语句不具备重复执行功能。
CT工具具备字段类型规范控制功能,当出现非法名称时会自动提示,包括表、字段命名长度超长、采用了数据库关键字问题。对于多数据库兼容的应程序来说,使用了数据库关键字,会导致数据库对象创建失败和程序无法正常运行。而CT可以积累并监测是否使用了数据库关键字,在数据库设计环节就规避此问题。PD不具备多数据库兼容性的检查,从历史经验看来,会出现异常名称(如字段长度太长(超出18个字符)、或使用了AS、KEY、USER、WINDOW、FUNCTION、FUNC等关键字)出现。
CT工具对主键、外键有命名规范,并能够自动按规范创建。在数据库设计环节可减轻工作量。而使用PD创建主键名、索引名、外键名,通常由人为编制的,易发生命名混乱。
本申请通用型数据库转换装置,在实验中,累计兼容了6种类型的数据库,分别为ORACLE、MYSQL、SQLSERVER、达梦、DB2-FOR-AS400和DB2-FOR-AIX,而且不同的数据库类型拥有多种版本,比如ORACLE有11g、12c等。每次产品版本更新时,需要在不同种类的数据库结构中添加表或字段,由于采用统一的CT来设计数据结构,所以在版本升级过程中自动完成,无需人工干预。
上述通用型数据库转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
存储器和处理器之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件互相之间可以通过一条或多条通讯总线或信号线实现电性连接。存储器中存储有可在处理器上运行的计算机程序,所述处理器通过运行存储在存储器内的计算机程序,从而实现本发明实施例中的网络拓扑布局方法。
其中,所述存储器可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器用于存储程序,所述处理器在接收到执行指令后,执行所述程序。
所述处理器可能是一种集成电路芯片,具有数据的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种通用型数据库转换装置,用于数据库的创建和维护,其特征在于,所述通用型数据库转换装置,包括:
创建数据库模块,用于接收编辑好的数据库设计文件,调用解析模块逐行解析数据库设计文件中的设计语句并生成对应的SQL语句,执行所述SQL语句创建数据库对象;
解析模块,用于接受所述创建数据库模块的调用解析数据库设计文件中的设计语句并生成对应的SQL语句;
逆向模块,用于将目标数据库逆向生成为数据库设计文件。
2.根据权利要求1所述的通用型数据库转换装置,其特征在于,所述通用型数据库转换装置,还包括:
差异报告模块,用于生成数据库与数据库设计文件之间的差异报告。
3.根据权利要求1所述的通用型数据库转换装置,其特征在于,所述创建数据库模块,执行如下操作:
连接数据库;
读取数据库设计文件,从数据库设计文件中按行读取设计语句;
调用解析模块解析设计语句并生成数据库对应的SQL语句,从解析模块获取所生成的SQL语句;
在执行所生成的SQL语句时先判定对应的数据库对象是否存在,如果存在则跳过,如果不存在则在数据库中执行并提交;
判断是否到达文件尾,如果到达文件尾,则结束创建并弹出完成对话框,否则继续从数据库设计文件中按行读取设计语句并解析执行。
4.根据权利要求1所述的通用型数据库转换装置,其特征在于,所述创建数据库模块,还执行如下操作:
检查数据库设计文件中的数据库对象是否与数据库类型兼容,若不兼容,则发出预警。
5.根据权利要求1所述的通用型数据库转换装置,其特征在于,所述通用型数据库转换装置,还预先配置有各个数据库类型对应的数据库设计文件中数据类型与创建的数据库中的数据类型关系列表,所述解析模块按照所述关系列表转换对应的数据类型,生成与数据库类型相匹配的SQL语句。
6.根据权利要求1所述的通用型数据库转换装置,其特征在于,所述逆向模块,执行如下操作:
连接目标数据库;
从数据库的系统表中获取数据库对象清单;
根据获取的对象清单,生成对应的数据库设计文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968933.XA CN113792027B (zh) | 2021-08-23 | 2021-08-23 | 一种通用型数据库转换装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110968933.XA CN113792027B (zh) | 2021-08-23 | 2021-08-23 | 一种通用型数据库转换装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113792027A true CN113792027A (zh) | 2021-12-14 |
CN113792027B CN113792027B (zh) | 2023-06-16 |
Family
ID=78876269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110968933.XA Active CN113792027B (zh) | 2021-08-23 | 2021-08-23 | 一种通用型数据库转换装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113792027B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010445A (zh) * | 2023-03-28 | 2023-04-25 | 恒生电子股份有限公司 | 数据库sql脚本的处理方法及装置 |
CN117331963A (zh) * | 2023-11-28 | 2024-01-02 | 恒生电子股份有限公司 | 数据访问处理方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163776A (en) * | 1998-03-23 | 2000-12-19 | Software Tree, Inc. | System and method for exchanging data and commands between an object oriented system and relational system |
US20100094829A1 (en) * | 2008-10-14 | 2010-04-15 | Castellanos Maria G | Database query profiler |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN103136445A (zh) * | 2013-01-29 | 2013-06-05 | 浙江大学 | 一种openEHR信息到关系数据库的转换方法 |
CN103678532A (zh) * | 2013-12-02 | 2014-03-26 | 中国移动(深圳)有限公司 | 变更语句逆向分析方法、数据库变更回退方法及系统 |
WO2016045285A1 (zh) * | 2014-09-25 | 2016-03-31 | 中兴通讯股份有限公司 | 一种数据库的数据同步方法、装置及系统 |
CN110569230A (zh) * | 2019-08-30 | 2019-12-13 | 苏州浪潮智能科技有限公司 | 数据库设计模型与设计文档互相转换方法、系统及设备 |
CN110674162A (zh) * | 2019-09-23 | 2020-01-10 | 税友软件集团股份有限公司 | 一种数据库语句执行方法及相关装置 |
US20200311095A1 (en) * | 2019-03-29 | 2020-10-01 | Next Pathway Inc. | System and method for automated source code generation for database conversion |
CN113032366A (zh) * | 2021-03-24 | 2021-06-25 | 东北大学 | 基于Flex和Bison的SQL语法树解析方法 |
-
2021
- 2021-08-23 CN CN202110968933.XA patent/CN113792027B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6163776A (en) * | 1998-03-23 | 2000-12-19 | Software Tree, Inc. | System and method for exchanging data and commands between an object oriented system and relational system |
US20100094829A1 (en) * | 2008-10-14 | 2010-04-15 | Castellanos Maria G | Database query profiler |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN103136445A (zh) * | 2013-01-29 | 2013-06-05 | 浙江大学 | 一种openEHR信息到关系数据库的转换方法 |
CN103678532A (zh) * | 2013-12-02 | 2014-03-26 | 中国移动(深圳)有限公司 | 变更语句逆向分析方法、数据库变更回退方法及系统 |
WO2016045285A1 (zh) * | 2014-09-25 | 2016-03-31 | 中兴通讯股份有限公司 | 一种数据库的数据同步方法、装置及系统 |
US20200311095A1 (en) * | 2019-03-29 | 2020-10-01 | Next Pathway Inc. | System and method for automated source code generation for database conversion |
CN110569230A (zh) * | 2019-08-30 | 2019-12-13 | 苏州浪潮智能科技有限公司 | 数据库设计模型与设计文档互相转换方法、系统及设备 |
CN110674162A (zh) * | 2019-09-23 | 2020-01-10 | 税友软件集团股份有限公司 | 一种数据库语句执行方法及相关装置 |
CN113032366A (zh) * | 2021-03-24 | 2021-06-25 | 东北大学 | 基于Flex和Bison的SQL语法树解析方法 |
Non-Patent Citations (3)
Title |
---|
YUSRA YOUSEF AMER; NAEL HIRZALLAH;: "An approach to convert object oriented database into XML", 2013 5TH INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND INFORMATION TECHNOLOGY, pages 238 - 242 * |
汪雪飞: "基于PostgreSQL的大规模分布式异构数据库统一访问研究", 中国优秀硕士学位论文全文数据库信息科技辑, pages 138 - 928 * |
陈刚;羌铃铃;郭冯利;: "智能网计费模块兼容Informix和Oracle数据库", 电脑编程技巧与维护, no. 12, pages 42 - 47 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010445A (zh) * | 2023-03-28 | 2023-04-25 | 恒生电子股份有限公司 | 数据库sql脚本的处理方法及装置 |
CN117331963A (zh) * | 2023-11-28 | 2024-01-02 | 恒生电子股份有限公司 | 数据访问处理方法、装置、电子设备及存储介质 |
CN117331963B (zh) * | 2023-11-28 | 2024-03-08 | 恒生电子股份有限公司 | 数据访问处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113792027B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606573B2 (en) | System and method for computer language migration using a re-architecture tool for decomposing a legacy system and recomposing a modernized system | |
US20190220504A1 (en) | Method and system for editing text with a find and replace function leveraging derivations of the find and replace input | |
CN108469952B (zh) | 一种管理游戏配置的代码生成方法及配套工具 | |
CN100462962C (zh) | 文本的标号系统-翻译和在运行时间的多语言支持以及设计 | |
CN113792027B (zh) | 一种通用型数据库转换装置 | |
US8533140B2 (en) | Method and system for design check knowledge construction | |
JP2000148461A (ja) | ソフトウェアモデル及び既存のソ―スコ―ドを同期化させる方法及びその装置 | |
US20140082487A1 (en) | Automatically generating a glossary of terms for a given document or group of documents | |
EP3103002B1 (en) | Batch generation of links to documents based on document name and page content matching | |
US20090217243A1 (en) | Automatic software configuring system | |
US20210365258A1 (en) | Method and system for updating legacy software | |
US20100228538A1 (en) | Computational linguistic systems and methods | |
US20140282396A1 (en) | Computerized system and method for extracting business rules from source code | |
CN112949324A (zh) | 飞机维修技术手册数据的翻译、管理方法及其系统和终端 | |
JP2018185809A (ja) | 自然言語翻訳及びローカライゼーション | |
CN111367893A (zh) | 数据库版本迭代的方法及装置 | |
CN115688675A (zh) | 一种灵活在线检查和校正电路原理图参数方法 | |
JP2008225898A (ja) | 変換装置、変換プログラム及び変換方法 | |
US8630981B1 (en) | Techniques for differencing binary installation packages | |
JP6022815B2 (ja) | 構文解析を用いたソースコードの差分抽出方法およびシステム | |
CN110633084A (zh) | 基于单个样例的代码转换推导方法和装置 | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
CN112733517B (zh) | 需求模板符合性检查的方法、电子设备及存储介质 | |
EP0990983A1 (en) | Automation of the design recovery and forward engineering of legacy applications | |
CN115579096A (zh) | 一种针对药物警戒e2b r3标准报告的自动生成与解析验证方法、系统及存储介质 |
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 |