78模板网分享cms建站教程,提供网站模板、网站插件、办公模板等模板教程免费学习,找模板教程就上78模板网!

zblog网站数据迁移到帝国cms后使用存储过程执行网站标签批量替换

本地mysql数据库版本低,不能用mysql正则替换函数REGEXP_REPLACE,因此用存储过程执行循环调用。
存储过程:
DELIMITER //
DROP PROCEDURE if EXISTS pdu_user;  -- 如果存在pdu_user存储过程则删除
CREATE procedure pdu_user(a int)     -- 创建无参存储过程,名称为pdu_user
BEGIN
DECLARE i INT;                      -- 申明变量
SET i = 1;                          -- 变量赋值
WHILE i<=a DO                         -- 结束循环的条件: 当i大于a时跳出while循环
-- 往t_t_user表添加数据
update phome_ecms_news_data_1 SET newstext=REPLACE(newstext,'tags-i.html','tags/i/');
SET i = i+1;                        -- 循环一次,i加1
END WHILE;                          -- 结束while循环
END
//  # 结束定义语句
CALL pdu_user(16476);                    -- 调用存储过程
DELIMITER ;
16476是tags标签最大id,如果存储过程执行后停止了,需要删除存储过程才能执行。
第二个版本
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,CONCAT('tags-',i,'.html'),CONCAT('tags/',i,'/'));
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;
call my_procedure(1000);

本文链接:http://78moban.cn/post/16481.html

版权声明:站内所有文章皆来自网络转载,只供模板演示使用,并无任何其它意义!

联系技术
文章删除 友链合作 技术交流群
1050177837
公众号
公众号
公众号
返回顶部