求mysql如何替换数据库中所有表所有字段中的指定字符A为b

单位名称变更了,要把原来数据库中所有相关的内容全变更过来,现数据库比较大,有数百个表,各表中均可能包含有单位名称的字符。现求一办法能在查询管理中一次性实现整个库的特定字符... 单位名称变更了,要把原来数据库中所有相关的内容全变更过来,现数据库比较大,有数百个表,各表中均可能包含有单位名称的字符。

现求一办法能在查询管理中一次性实现整个库的特定字符的替换,谢谢!
展开
 我来答
qq2802820324
推荐于2018-03-07 · 超过13用户采纳过TA的回答
知道答主
回答量:41
采纳率:100%
帮助的人:34万
展开全部
提供两个办法;
第一个是,笨办法,查找每个字段,看有单位的名称就修改一下。
第二个是,如果数据库数据量不大的话,可以使用mysqldump将数据导出到一个文本文件,然后使用文本文件的替换功能,将单位名称替换成正确的,然后再将数据导入数据库。
当然,也可以两个联合使用,比如先使用第二个方法中的mysqldump将数据导出,然后查找单位名称,看一共有多少处需要修改,然后再使用第一个方法中的update语句将字段值更新成新的单位名称。
pyllion
推荐于2016-01-08 · TA获得超过817个赞
知道小有建树答主
回答量:661
采纳率:100%
帮助的人:655万
展开全部
1.理论上没可能一次性实现;
2.实际上很多朋友都会碰到这种需求,怎么解决呢?
 1)把所有表的结构和数据导出为文本的.sql文件,用文本编辑软件word或者dw等都可以,用替换方法把字符A替换为B,但这有可能误操作,所以要慎重查看;
 2)替换完以后,再利用mysql数据管理软件,把SQL文件导入到新的数据库中,进行严格测试,通过后;把旧版数据备份(主要为了安全着想),然后导入新的数据即可完成所需操作;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友87b2a52
2015-04-20 · 知道合伙人软件行家
百度网友87b2a52
知道合伙人软件行家
采纳数:523 获赞数:3490
毕业于南京大学,硕士学位。10年软件研发经验。现任信息系统架构师。

向TA提问 私信TA
展开全部
DECLARE @TableName VARCHAR(119)
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
2015-10-06 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:110万
展开全部
DECLARE @TableName VARCHAR(119)
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莘赡05V
2015-08-29 · 知道合伙人软件行家
莘赡05V
知道合伙人软件行家
采纳数:1397 获赞数:3710
毕业安徽理工大学

向TA提问 私信TA
展开全部
需要写一个脚本程序,然后通过PHP去遍历修改字段的字符就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式