详情页

zblog网站数据转移到帝国cms中的出现标签tags-id.html转换为tags/id/ 存储执行替换命令

时间:2023年12月10日

编辑:佚名

zblog网站数据转移到帝国cms中的出现标签tags-id.html转换为tags/id/,最简单的是用mysql正则替换 ,
update phome_ecms_news_data_1 SET newstext=REGEXP_REPLACE(newstext,'tags-([0-9]+)\.html','tags/$1/');
但是本地数据库版本不支持,不想升级数据库,于是小编写了一个存储过程执行这个功能,sql代码如下
DELIMITER $$
CREATE PROCEDURE my_procedure()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE (i <= 16476) DO
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,'tags-i.html','tags/i/');
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;
call my_procedure();
运行时间比较长,最好是空闲时间或者流量少的凌晨执行。
DELIMITER $$
CREATE PROCEDURE my_procedure(a INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE (i <= a) DO
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,'tags-i.html','tags/i/');
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;
call my_procedure(16476);
完善版
DELIMITER $$
CREATE PROCEDURE my_procedure(a INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE (i <= a) DO
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,CONCAT('tags-',i,'.html'),CONCAT('tags/',i,'/'));
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;
call my_procedure(16476);
如果上面的存储过程错误,可以删除后再建立存储过程。
删除存储过程
drop procedure my_procedure;
drop procedure if exists my_procedure;
相关文章
猜你需要