Експорт на базата
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
Конвертиране на MySQL база от cp1251 към utf8,