самый быстрый способ обновить базу данных Mysql - PullRequest
1 голос
/ 09 августа 2011

Просто интересно, каким будет лучший способ обновить всю (большую) базу данных.

По сути, я унаследовал базу данных, в которой были проблемы с символами, с некоторой помощью я разобрал проблемы с символами в дальнейшем (записывая в них), однако существующие данные необходимо устранить.

Было хорошее предложение, чтобы я мог использовать utf_decode для очистки всего этого - я пробовал это на неправильном значении на самой странице (при извлечении), и это прекрасно работает.

Поскольку, похоже, имеется много таблиц и много данных, каков наилучший / самый быстрый способ очистки всех данных во всей БД с использованием utf_decode?

Спасибо

Спасибо за комментарии, я, кажется, не могу комментировать напрямую, поэтому добавляю сообщение здесь - я посмотрю и попробую! спасибо.

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Вы пробовали использовать функцию MySQL CONVERT? В зависимости от ваших данных вы можете обновлять таблицы одним оператором, например «UPDATE mytable SET myfield = CONVERT (myfield USING utf8)».

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

1 голос
/ 09 августа 2011

Получить все данные, преобразовать их и вставить как:

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

и т.д.

Идет быстрее, чем цикл php с несколькими INSERT-запросами.

EDIT:

Если вы используете хороший массив, вы можете запустить гладкую систему, чтобы сделать это:

$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
}

Скажите, если вам нужен еще пример кода.

...