1

只是想知道更新整个(大型)数据库的最佳方法是什么。

基本上,我继承了一个存在字符问题的数据库,在一些帮助下,我已经对未来的字符问题(正在写入)进行了排序,但是现有数据需要清理。

有一个很好的建议是我可以使用 utf_decode 来清理所有这些 - 我已经在页面本身的错误值上尝试过这个(当被拉入时)并且效果很好。

由于似乎有很多表和大量数据,使用 utf_decode 扫描整个数据库中所有数据的最佳/最快方法是什么?

谢谢

感谢您的评论,我似乎无法直接发表评论,所以在这里作为消息删除 - 我会看看并试一试!谢谢。

4

2 回答 2

1

您是否尝试过使用 MySQL 函数 CONVERT?根据您的数据,您可以在单个语句中更新表,例如“UPDATE mytable SET myfield = CONVERT(myfield USING utf8)”。

http://dev.mysql.com/doc/refman/5.0/en/charset-convert.html

于 2011-08-09T09:12:52.320 回答
1

获取所有数据,将其转换并插入为:

INSERT INTO table VALUES (id, text)
(1, 'utf8'), (2, 'utf8'), (3, 'utf8')

等等

比使用多个 INSERT 查询执行 php 循环更快。

编辑:

如果你使用一个不错的数组,你可以运行一个平滑的系统来做到这一点:

$arr = array('users' => array('user_id', 'text', 'username', 'first_name')));

foreach(array_keys($arr) as $h) {
    $query = mysql_query("SELECT * FROM {$h}");
    while($row = mysql_fetch_object($query)) {
        // Loop thingies, utf8_decode then and stuff
    }
    // Then implode them nicely and use above query
}

如果您需要更多代码示例,请告诉我。

于 2011-08-09T09:04:40.420 回答