不知道大家迁移时 REPLACE INTO 怎么适配的。
我的场景是这样的,之前有一套MySQL的安装脚本,包括了安装MySQL,然后创建账号,然后shell脚本执行sql脚本初始化业务数据库和填充默认的业务数据,在迁移过程中遇到了一个问题就是 REPLACE INTO 语句非常非常的多,上千条,当时手动改了几个 MERGE INTO 发现能执行,但是不知要改的到什么时候,要改很久,然后就写了个程序自动适配,从文件里读取一份MySQL的脚本,然后输出适配达梦的 MERGE INTO。
比如
REPLACE INTO
"sys_api"("apiId","apiName","apiCode","url",
"method","modelId","type","sort","status",
"remark","createTime","createUser",
"updateTime","updateUser","isDelete")
VALUES ('test','菜单列表','test','test','GET',
'test','4',null,
'1',null,'20190716171438','','20190716191605','','0');
然后输出一个完整的 符合语法的 MERGE INTO
MERGE INTO "sys_api" TAB1 USING
(SELECT
'test' AS FIE1,'菜单列表','test','test','GET','test','4',null,'1',null,'20190716171438','','20190716191605','','0'
FROM DUAL) TAB2
ON
(TAB1."apiId" = TAB2.FIE1)
WHEN MATCHED THEN
UPDATE SET
TAB1."apiName" = '菜单列表',
TAB1."apiCode" = 'test',
TAB1."url" = 'test',
TAB1."method" = 'GET',
TAB1."modelId" = 'test',
TAB1."type" = '4',
TAB1."sort" = NULL,
TAB1."status" = '1',
TAB1."remark" = NULL,
TAB1."createTime" = '20190716171438',
TAB1."createUser" = '',
TAB1."updateTime" = '20190716191605',
TAB1."updateUser" = '',
TAB1."isDelete" = '0'
WHEN NOT MATCHED THEN
INSERT
("apiId","apiName","apiCode","url","method","modelId","type","sort","status","remark","createTime","createUser","updateTime","updateUser","isDelete")
VALUES ('test', '菜单列表', 'test', 'test', 'GET', 'test', '4', NULL, '1', NULL, '20190716171438', '', '20190716191605', '', '0');
不知道更好的解决办法了,有的话交流一下。
文章
阅读量
获赞