Конветрація бази даних в інше кодування

Деколи буває, що при проектуванні бази даних, народ робить одну помилку - вказує неправильне кодування. Наприклад сайт в UTF-8, а кодування бд - latin1, чи щось типу цього. З такою ситуацією зустрівся і я. Треба було якось всю базу перекодувати в utf-8. Погугливши, і прочитавши цей пост в мене получився приблизно такий скрипт конвертації (OS в мене Ubuntu Linux):

$tmp_file = '/path/to/dump.sql';
exec('mysqldump --user=username --password=password --host=host --default-character-set=latin1 -n -K --skip-set-charset --skip-extended-insert --comments=0 database_name > '.$tmp_file);
$string = "ALTER DATABASE `database_name` CHARACTER SET 'utf8'; ALTER DATABASE `".$db_config['db']['params']['dbname']."` COLLATE 'utf8_general_ci';
";
$data = file_get_contents($tmp_file);
$data = preg_replace('/DEFAULT CHARSET=(.*);/', 'DEFAULT CHARSET=utf8;', $data);
$res = fopen($tmp_file, 'w+');
$string .= $data;
fwrite($res, $string);
fclose($res);
exec("mysql --max_allowed_packet=1M --user=username --password=password --host=host --default-character-set=utf8 database_name < ".$tmp_file);
exec('chmod 777 '.$tmp_file);
exec('rm '.$tmp_file);

В мене конвертнуло коректно. Якщо що, я думаю ви без проблем розберетесь з кодом і підправите його: ) Успіхів! Крім того не забудьте всі решта запитів робити в utf-8.

$sql = "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'";

Аналогічно

$sql = "SET NAMES 'utf8'";

P.S. Не забудьте зробити бекап бази перед виконанням (про всяк випадок).

20 липня 2011р.
переглядів: 476
Рейтинг: 4.3
Автор: вал
20.07.11
0
а засобами ПХПМайАадмін чого не скористався?
Автор: admin
20.07.11
0
Я говорю не тільки про зміну кодування в таблиці, але і про зміну кодування даних всередині таблиці.
Автор: Val
18.08.11
0
crazy щось я не побачив в твоєму коді стрічки де перекодовуються дані в БД
Автор: admin
18.08.11
0
А ти запусти скрипт і побач результат: )
Автор: Володимир
24.12.11
0
Тут і не робиться перекодовування, тому ви і не побачили стрічку. Тут зливається файл, змінюється в ньому назва кодування де тільки можна і додається рядок олтера. Меджік.
додати коментар
Ваше ім'я
Ваш E-mail