批量更改列 字符集

lczddd 2009-08-07 11:13:59
我现在的myql 每个表中的字段编码不统一,我如何用语句批量更改为统一的字符集??着急,谢谢各位
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lczddd 2009-08-07
  • 打赏
  • 举报
回复
哦,我试试
vinsonshen 2009-08-07
  • 打赏
  • 举报
回复
如果要对以前数据都要更改,则只能先把库mysqldump出来(不带建表脚本),然后只mysqldump库的脚本,执行脚本,再执行上面接口更改表编码,然后在把前面mysqldump的备份数据恢复到表上即可。
obullxl 2009-08-07
  • 打赏
  • 举报
回复
帮顶,学习.
vinsonshen 2009-08-07
  • 打赏
  • 举报
回复
正如楼上所说的,只能改变未来的新数据罢啦
如你确实要批量更改某库下的所有表的编码,则可以写个存储过程来循环调度,如下:

接口:
DROP PROCEDURE IF EXISTS sp_alter_db_charset;
CREATE PROCEDURE `sp_alter_db_charset`(in i_dbname varchar(50))
begin
declare v_i int default 0;
declare v_tbname varchar(100);
declare cur_test cursor for select table_name from information_schema.tables where table_schema=i_dbname;
declare continue handler for not found set v_i=1;
open cur_test;
fetch cur_test into v_tbname;
while v_i=0 do
set @str=concat('alter table ',v_tbname,' charset gbk');
prepare stmt1 from @str;
execute stmt1;
deallocate prepare stmt1;
fetch cur_test into v_tbname;
end while;
close cur_test;
end;


调用:
call sp_alter_db_charset('库名');
懒得去死 2009-08-07
  • 打赏
  • 举报
回复
比如GBK
alter table charset GBK
不过你就算改了表的编码,现有的数据还是不会变的。 这个影响的只是未来的记录数据。

56,683

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧