|
|
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
Приветствую комрады. Да да есть еще такие мамонты которые работают с проектами в кодировке CP1251. Попрошу без тролинга и прочего, сам понимаю что это зло, сам понимаю что так не делают, но увы начальство ложит на это все большой и толстый **** который год, реализация какойнить ненужной кнопочки "гораздо важнее" чем оптимизация работы сервера, кодировка и прочие плюшки... Да, мир боль... Увы... И вынужден я поддерживать данное *омно, разрабатывать новые фитчи в перемешку с костылями и прочим... Предисловие закончили... А теперь вопрос. Как перевести базу из одной кодировки в другую. Имеется база данных: Тип: Mysql (MyISAM) Размер: 4622.50 MB (почистил кучу логов, до этого было 20 GB) Кол-во таблиц: 172 Была бы это небольшая база в несколько десятков или сот MB вопроса бы небыло, но тут другой случай. Делать простой Alter Table ничего не даст, закрашится все, опятьже будь небольшой р-р бд, можно было бы через любой редактор сконвертить, но тут не получится... Единственным выходом вижу - делать дамп, создать новую бд, написать скрипт и с помощью скрипта делать реинсерт с конвертацией данных... Это единственный вариант который приходит в голову, но всеже если кто-либо сталкивался с подобными адскими задачами по разбору старого калла и знает более рациональный и универсальный способ, буду оч благодарен за совет/линк... Заранее всем большое спасибо и большой плюс в карму каждому... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 12:58:50 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
ronik55Да да есть еще такие мамонты которые работают с проектами в кодировке CP1251. Попрошу без тролинга и прочегоА чего тут троллить? Я сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных, когда у меня и так оперативки не хватает. ronik55Делать простой Alter Table ничего не даст, закрашится всеПочему? ronik55Единственным выходом вижу - делать дамп, создать новую бд, написать скрипт и с помощью скрипта делать реинсерт с конвертацией данных...Вполне нормальный вариант. Делаете дамп, конвертите его (например, утилитой iconv), пересоздаете базу, заливаете дамп. Не забудьте сделать в сторонку резервную копию базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 14:42:13 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
miksoft, я немного не представляю каким образом iconv перемаслает почти 5 гигов... есть опыт таких действий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 14:54:01 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
ronik55miksoft, я немного не представляю каким образом iconv перемаслает почти 5 гигов... есть опыт таких действий?Вас же не удивляет, что команда copy (в линуксе cp) может "перемаслать" 5 гигов? Работа iconv ненамного сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 14:59:23 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
miksoft, чтож обнадежили, благодарствую, на днях буду бэкапиться и тестить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 15:07:21 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
ronik55Предисловие закончили... А теперь вопрос. Как перевести базу из одной кодировки в другую. Так просто ж. Сделать полный дамп, поменять во всех таблицах и полях кодировку символьных полей (или убрать её явное указание и задать её в новой базе данных), перекодировать сам дамп из cp1251 в utf8, и после этого залить (при заливке нужно ещё убедиться, что клиентский чарсет стоит utf8). Наверное, можно и не перекодировать дамп, а при снятии дампа указать клиентскую кодировку utf8, может mysqldump и сам перекодирует. Но убирание кодировки из всех полей и всех таблиц -- ОБЯЗАТЕЛЬНО. Я не знаю, может можно как-то указать Mysqldump-у, чтобы он их не проставлял, надо глянуть доку по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 16:13:47 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
ronik55 рациональный и универсальный способ, буду оч благодарен за совет/линк... Есть такая бесполезная программа на ПХП - sypex dumper (зачем нужен дампе если есть mysqldump?) Однако, функция конвертации кодировок в ней полезная. Она действительно все исправляет сама и данные и метаданные таблиц. https://sypex.net/ru/encoding/ Но не уверен, что сможет обработать совсем большую таблицу. авторЯ сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных, когда у меня и так оперативки не хватает. Замечал, в основном все проблемы с этим возникают на стороне javascript. В каком-нибудь модном и молодежном фреймворке могут даже отказаться решать специфические проблемы. Им то незачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2016, 23:29:41 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
автор... Замечал, в основном все проблемы с этим возникают на стороне javascript.......- так повелось, что основной "объект AJAX" -XMLHttpRequest "заточен" под utf8 - с этой кодировкой и нет проблем. Запросы GET и POST все равно идут в utf8..... стандарт W3C - JavaScript-функция encodeURIComponent() условно, использование iconv возложено на разработчика... miksoft...... Я сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных.......наоборот ушел в utf8, когда-то устав "бороться" с cp1251, мои объемы данных не критичны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2016, 11:14:56 |
|
||
|
Конвертация относительно большой БД из cp1251 в utf8
|
|||
|---|---|---|---|
|
#18+
Может создать в той же базе копии таблиц с префиксом, но в нужной кодировке. Потом insert into select в несколько сессий. Затем rename table. И удаление исходных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 18:17:01 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39151233&tid=1832236]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
195ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 497ms |

| 0 / 0 |
