只是想知道更新整个(大型)数据库的最佳方法是什么。
基本上我继承了一个有字符问题的数据库,在一些帮助下,我已经对未来的字符问题进行了排序(写入)但是现有的数据需要清理。
有一个很好的建议,我可以使用utf_decode来清理所有这些 - 我在页面本身的错误值上尝试了这个(当被拉入时)并且效果很好。
由于似乎有很多表和大量数据,使用utf_decode扫描整个数据库中所有数据的最佳/最快方法是什么?
由于
感谢您的评论,我似乎无法直接评论,所以在这里放下信息 - 我会仔细看看并给他们一个机会!感谢。
答案 0 :(得分: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
}
告诉我你是否需要更多代码示例。
答案 1 :(得分:1)
您是否尝试过使用MySQL函数CONVERT?根据您的数据,您可以在单个语句中更新表,例如“UPDATE mytable SET myfield = CONVERT(myfield USING utf8)”。