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

Експорт на базата
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

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
Конвертиране на MySQL база от cp1251 към utf8, 5.0 out of 5 based on 1 rating

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

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