2009-12-15 180 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或文本編輯器(如果文件不是很大)代替字符。之後,再次運行腳本。 也許有一種方法可以直接在數據庫中執行此操作,但我不知道它。

關於我的解決方案的問題是它不是原子的。轉儲和重新插入之間的數據庫更改將丟失。

問候 拉斐爾