如何替换MYSQL数据库文件

如何替换MYSQL数据库文件,第1张

mysql中自带有替换,去处首尾指定字符的函数,如trim

update test set name=trim(TRAILING '\r\n' FROM `name`);

其中 test为指定表,name为指定字段,'\r\n'为要去除的字符

您好,update mt2 set name = replace(name, substring(name, locate('<contact>', name),locate('</contact>', name)-locate('<contact>'+10, name)),'');

locate:

LOCATE(substr,str)

POSITION(substr IN str)

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

substring

SUBSTR(str,pos,len): 由<str>中的第<pos>位置开始,选出接下去的<len>个字元。

replace

replace(str1, str2, str3): 在字串 str1 中,当 str2 出现时,将其以 str3 替代。

提供两个办法;

第一个是,笨办法,查找每个字段,看有单位的名称就修改一下。

第二个是,如果数据库数据量不大的话,可以使用mysqldump将数据导出到一个文本文件,然后使用文本文件的替换功能,将单位名称替换成正确的,然后再将数据导入数据库。

当然,也可以两个联合使用,比如先使用第二个方法中的mysqldump将数据导出,然后查找单位名称,看一共有多少处需要修改,然后再使用第一个方法中的update语句将字段值更新成新的单位名称。

import javaioIOException;

import javaioPrintWriter;

import javautilScanner;

public class Main {

    public static void main(String[] args) throws IOException {

        String target = "19216812";

        String replace = "192168120";

        String sourceFile = "C:/backupsql";

        String outputFile = "C:/outputsql";

        Scanner in = new Scanner(sourceFile);

        PrintWriter pw = new PrintWriter(outputFile);

        Systemoutprintln("文件已打开,替换中");

        String regex = "\\Q" + target + "\\E(\\D|$)";

        while (inhasNextLine()) {

            String line = innextLine();

            line = linereplaceAll(regex, replace);

            pwprintln(line);

        }

        pwflush();

        pwclose();

        inclose();

        Systemoutprintln("替换完毕,文件已保存。");

    }

}

文件打不开,可以考虑使用程序进行替换呗。

这里加入了正则判断,以免192168120被替换成1921681200。

--test库是目标库(做替换前一定要做好备份)

--test2是名字数据集表所在的库

use test2

-- 建立测试表和数据

create table picName (oldname varchar(200),newname varchar(200));

insert into picName values ('JPG','tupianJPG'),('博客JPG','bokeJPG'),('网站JPG','wangzhanJPG');

commit;

-- 建立存储过程

drop procedure if exists dynamic_cursor;

CREATE PROCEDURE dynamic_cursor (IN db_name varchar(100))

BEGIN

    DECLARE done INT DEFAULT 0;

    DECLARE v_updateSql varchar(2000);

    DECLARE times INT DEFAULT 0;

 --

 --

  declare _err int default 0;

  

    DECLARE cur CURSOR for( SELECT updateSql from picName_view);

   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION set _err=1;

    DROP VIEW IF EXISTS picName_view;

  SET @sqlstr = "CREATE VIEW picName_view as ";

  --   SET @sqlstr = "";

  SET @sqlstr =CONCAT(@sqlstr ,"select concat('update ",db_name,"`',atable_name,'` set ',acolumn_name,'=replace(',acolumn_name,',''',boldname,''',''',bnewname,''')') updateSql");

  SET @sqlstr =CONCAT(@sqlstr ," from information_schema`COLUMNS` a ,picName b ");

  SET @sqlstr =CONCAT(@sqlstr ," where aTABLE_SCHEMA='",db_name,"' and ");

  SET @sqlstr =CONCAT(@sqlstr ," (aCOLUMN_type like '%char%' or aCOLUMN_type like '%text%' or aCOLUMN_type like '%blob%')");

   PREPARE stmt FROM @sqlstr;

    EXECUTE stmt;

    DEALLOCATE PREPARE stmt;

    OPEN cur;

  

    f_loop:LOOP

    FETCH cur INTO v_updateSql;

  IF done THEN

LEAVE f_loop;

  END IF;

  set @updateSql=v_updateSql;

   PREPARE stmt2 FROM @updateSql;

       EXECUTE stmt2;

   

   set times=times+1;

 --    SELECT v_updateSql;

    END LOOP f_loop;

    CLOSE cur;

/ /

   COMMIT;

    select times;

     

END;

-- 测试

call dynamic_cursor('test');

以上就是关于如何替换MYSQL数据库文件全部的内容,包括:如何替换MYSQL数据库文件、mysql数据库中如何进行模糊替换字符串、求mysql如何替换数据库中所有表所有字段中的指定字符A为b等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9678856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存