powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конвертация относительно большой БД из cp1251 в utf8
10 сообщений из 10, страница 1 из 1
Конвертация относительно большой БД из cp1251 в utf8
    #39150508
ronik55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую комрады. Да да есть еще такие мамонты которые работают с проектами в кодировке CP1251. Попрошу без тролинга и прочего, сам понимаю что это зло, сам понимаю что так не делают, но увы начальство ложит на это все большой и толстый **** который год, реализация какойнить ненужной кнопочки "гораздо важнее" чем оптимизация работы сервера, кодировка и прочие плюшки... Да, мир боль... Увы... И вынужден я поддерживать данное *омно, разрабатывать новые фитчи в перемешку с костылями и прочим...

Предисловие закончили... А теперь вопрос. Как перевести базу из одной кодировки в другую.

Имеется база данных:
Тип: Mysql (MyISAM)
Размер: 4622.50 MB (почистил кучу логов, до этого было 20 GB)
Кол-во таблиц: 172

Была бы это небольшая база в несколько десятков или сот MB вопроса бы небыло, но тут другой случай. Делать простой Alter Table ничего не даст, закрашится все, опятьже будь небольшой р-р бд, можно было бы через любой редактор сконвертить, но тут не получится...

Единственным выходом вижу - делать дамп, создать новую бд, написать скрипт и с помощью скрипта делать реинсерт с конвертацией данных... Это единственный вариант который приходит в голову, но всеже если кто-либо сталкивался с подобными адскими задачами по разбору старого калла и знает более рациональный и универсальный способ, буду оч благодарен за совет/линк...

Заранее всем большое спасибо и большой плюс в карму каждому...
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39150670
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ronik55Да да есть еще такие мамонты которые работают с проектами в кодировке CP1251. Попрошу без тролинга и прочегоА чего тут троллить?
Я сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных, когда у меня и так оперативки не хватает.
ronik55Делать простой Alter Table ничего не даст, закрашится всеПочему?

ronik55Единственным выходом вижу - делать дамп, создать новую бд, написать скрипт и с помощью скрипта делать реинсерт с конвертацией данных...Вполне нормальный вариант. Делаете дамп, конвертите его (например, утилитой iconv), пересоздаете базу, заливаете дамп. Не забудьте сделать в сторонку резервную копию базы.
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39150686
ronik55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

я немного не представляю каким образом iconv перемаслает почти 5 гигов... есть опыт таких действий?
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39150695
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ronik55miksoft,

я немного не представляю каким образом iconv перемаслает почти 5 гигов... есть опыт таких действий?Вас же не удивляет, что команда copy (в линуксе cp) может "перемаслать" 5 гигов?
Работа iconv ненамного сложнее.
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39150701
ronik55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, чтож обнадежили, благодарствую, на днях буду бэкапиться и тестить
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39150768
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ronik55Предисловие закончили... А теперь вопрос. Как перевести базу из одной кодировки в другую.


Так просто ж.
Сделать полный дамп,
поменять во всех таблицах и полях кодировку символьных полей (или убрать её явное указание и задать её в новой базе данных),
перекодировать сам дамп из cp1251 в utf8, и после этого залить (при заливке нужно ещё убедиться, что клиентский чарсет стоит utf8).

Наверное, можно и не перекодировать дамп, а при снятии дампа указать клиентскую кодировку utf8, может mysqldump и сам перекодирует.

Но убирание кодировки из всех полей и всех таблиц -- ОБЯЗАТЕЛЬНО.
Я не знаю, может можно как-то указать Mysqldump-у, чтобы он их не проставлял, надо глянуть доку по нему.
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39151016
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ronik55 рациональный и универсальный способ, буду оч благодарен за совет/линк...

Есть такая бесполезная программа на ПХП - sypex dumper (зачем нужен дампе если есть mysqldump?) Однако, функция конвертации кодировок в ней полезная. Она действительно все исправляет сама и данные и метаданные таблиц. https://sypex.net/ru/encoding/
Но не уверен, что сможет обработать совсем большую таблицу.


авторЯ сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных, когда у меня и так оперативки не хватает.
Замечал, в основном все проблемы с этим возникают на стороне javascript. В каком-нибудь модном и молодежном фреймворке могут даже отказаться решать специфические проблемы. Им то незачем.
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39151233
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор... Замечал, в основном все проблемы с этим возникают на стороне javascript.......- так повелось, что основной "объект AJAX" -XMLHttpRequest "заточен" под utf8 - с этой кодировкой и нет проблем. Запросы GET и POST все равно идут в utf8..... стандарт W3C - JavaScript-функция encodeURIComponent()
условно, использование iconv возложено на разработчика...

miksoft......
Я сам живу в 1251 и никуда не собираюсь. Если говорить об MySQL, то мне не нужно бессмысленное удвоение данных.......наоборот ушел в utf8, когда-то устав "бороться" с cp1251, мои объемы данных не критичны...
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39152560
c1wer3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может создать в той же базе копии таблиц с префиксом, но в нужной кодировке. Потом insert into select в несколько сессий. Затем rename table. И удаление исходных таблиц.
...
Рейтинг: 0 / 0
Конвертация относительно большой БД из cp1251 в utf8
    #39154201
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_search официально удалил поддержку 1251.
Эти то почему ? Негодую.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конвертация относительно большой БД из cp1251 в utf8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]