如何将MySQL中指定的表结构同步到人大金仓数据库

场景        

刚开始做数据库适配的时候,这是一个棘手的问题,因为MySQL的库里,表结构,字段都是最新的,但是金仓的库,全是旧版本的表结构。需要把我们模块的表结构,同步到金仓中。

        虽然金仓有数据库同步工具,但是直接把所有表都给同步过来,难免会影响到其他模块。

        然后就写了一个工具类来进行这一操作。

        原理:获取MySQL中,指定的某几张表,通过程序,获取表的字段,字段类型,长度,注释,主键,索引,标注释等等,然后生成金仓中的可执行SQL,自动执行。

(ps由于,工具类纯自己手写,因此设置了vip文章,非vip成员要获取联系作者)

首先先看一下金仓的创建表语法和删除表语法:

这俩个语法和MySQL不同,包括创建表时,给字段加注释,给表加注释的方式都不同!

创建表:

给字段加注释,直接在字段后面用 comment 'xxxxx'会报错,同样给表加注释直接在表的后面指定comment也会报错,必须要在语句的最后统一指定,试了好多次错才找到解决方法。

举个例子:

CREATE TABLE "PUBLIC"."rec_a01_his" (
	"A00" VARCHAR(36 char) NOT NULL  PRIMARY KEY,
	"R0101" VARCHAR(60 char) NULL ,
	"R0102" VARCHAR(10 char) NULL ,
	"R0103" VARCHAR(10 char) NULL ,
	"R0104" DATE NULL ,
	"RECTYPEID" VARCHAR(100 char) NULL ,
	"DELETEFLAG" VARCHAR(2 char) NULL  DEFAULT 0,
	"CREATETIME" TIMESTAMP NULL ,
	"CREATEUSER" VARCHAR(36 char) NULL ,
	"UPDATETIME" TIMESTAMP NULL ,
	"UPDATEUSER" VARCHAR(36 char) NULL
)
WITH (
	OIDS=FALSE
);
COMMENT ON TABLE "PUBLIC"."rec_a01_his" IS '基本情况';
COMMENT ON COLUMN "PUBLIC"."rec_a01_his"."R0101" IS '姓名';
COMMENT ON COLUMN "PUBLIC"."rec_a01_his"."R0102" IS '性别';
COMMENT ON COLUMN "PUBLIC"."rec_a01_his"."DELETETIME" IS '删除时间';
COMMENT ON COLUMN "PUBLIC"."rec_a01_his"."DELETEUSER" IS '删除人';
CREATE INDEX "rec_a01_his_rectypeid" ON "PUBLIC"."rec_a01_his" (RECTYPEID);

删除表:如果存在就删除,不存在执行也不报错

DROP TABLE IF EXISTS  "rec_a01_his" CASCADE;

案例

 下面提供的工具接口中       一共有三个接口:(支持一次输入多张表,多个表名之间用英文逗号分隔)

第一个:根据输入的表名,输出/控制台打印出可执行的新建表SQL。

第二个:根据输入的表名,输出/控制台打印出可执行的删除表SQL。

第三个:根据输入的表名,先删除这张表,再重新从MySQL中获取结构,然后再通过建表SQL进行新建。        

No1: 

发请求:rec_test为测试表如何将MySQL中指定的表结构同步到人大金仓数据库_第1张图片

控制台输出:

如何将MySQL中指定的表结构同步到人大金仓数据库_第2张图片

可以直接复制到金仓去执行。

No2: 

 rec_test为测试表,生成它的删除语句,这个比较简单

如何将MySQL中指定的表结构同步到人大金仓数据库_第3张图片

你可能感兴趣的:(数据库,数据库,mysql)