Конвертиране на MySQL база от cp1251 към utf8

Written by

in

Експорт на базата
mysqldump -uMSQLUSER MYSQLDB -pMYSQLPASS–default-character-set=cp1251 > DUMPFILE_CP1251

Създава се новата или стара база:

drop database MYSQLDB;CREATE DATABASE MYSQLDB CHARACTER SET utf8 COLLATE utf8_general_ci;

Конвертираме базата от cp1251 на utf8 . Използвам recode, че ми омръзна от този iconv:

recode -v -f windows-1251..UTF-8 < DUMPFILE_1251 > DUMPFILE_UTF8

Извеждат се редовете върху които ще се работи. Идеята е , че така ще се предпазим по- добре да не заменим нещо друго.

grep “ DEFAULT CHARSET=cp1251″ DUMPFILE_UTF8
) ENGINE=MyISAM AUTO_INCREMENT=52 DEFAULT CHARSET=cp1251;
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;
) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=cp1251;

Редактираме тези редове като заменяме cp1251 със utf8

find DUMPFILE_UTF8 -type f -exec sed -i ‘s/) ENGINE=MyISAM AUTO_INCREMENT=52 DEFAULT CHARSET=cp1251;/) ENGINE=MyISAM AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;/g’ {} \;
find DUMPFILE_UTF8 -type f -exec sed -i ‘s/) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;/) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;/g’ {} \;
find DUMPFILE_UTF8 -type f -exec sed -i ‘s/) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=cp1251;/) ENGINE=MyISAM AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;/g’ {} \;

Редактираме и set names:

find DUMPFILE_UTF8 -type f -exec sed -i ‘s/ SET NAMES cp1251 / SET NAMES utf8 /g’ {} \;

Сега се импортва дъмпа в базата

mysql -uMYSQLUSER -pMYSQLPASS –max_allowed_packet=64M –default-character-set=utf8 MYSQLDB < /home/amri/referati_org_utf82.sql

Сега ? Всичко е конвертирано в utf8 🙂

PS: Ето един приятелски сайт за компютри и електронни неща : restart.bg

Comments

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *