2009-12-15 182 views
0

我已经从latin1数据库将一个大的phpbb3数据库转移到utf-8 一切正常,现在我需要更改数据库中的“奇怪”字符。昨天,我发现工作,现在我无法找到它了一个方法,我想:更换mysql数据库中的字符

update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à'); 
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è'); 

基本上我需要更改表中的字段全部A字符A等。

你怎么能做到这一点?

感谢

+0

事实上,您的数据库中有奇怪的字符表明转换并不顺利。事实上,它出错了。 – 2009-12-15 11:08:29

+0

从快速谷歌搜索,您的查询似乎是正确的。这些字段没有更新或者是其他问题?你有没有试过做一些相当安全的事情,比如用“__x__”改变“x”的所有实例?你可以看到工作但很容易颠倒的东西? – Anthony 2009-12-15 11:21:27

+0

@rikh是的,它变得非常非常错误,但我不能做任何事情,这是托管人给我的:-( @安东尼你是对的,我试图到另一张桌子,它确实有效,看起来像与表格的BLOB类型有关。 – 0plus1 2009-12-15 11:30:01

回答

1

更新phpbb_topics设置TOPIC_TITLE =更换(替换(TOPIC_TITLE, 'A', 'E'), 'A', 'A');

你应该回答自己以下几个问题:

  • 什么二进制数据存储在数据库中(使用ASCII()函数或SELECT ... INTO DUMPFILE)
  • 什么二进制数据被发送到客户端(其并非总是与存储的一样)
  • 客户端如何显示接收到的二进制数据? (尝试不同的客户端和不同的选项)
0

我将它转储到.sql文件,然后用SED或文本编辑器(如果文件不是很大)代替字符。之后,再次运行脚本。 也许有一种方法可以直接在数据库中执行此操作,但我不知道它。

关于我的解决方案的问题是它不是原子的。转储和重新插入之间的数据库更改将丢失。

问候 拉斐尔