Перейти до

Конвертация базы мукскуля.HELP


Рекомендованные сообщения

Столкнулся с проблемой. Никак не могу переконвертировать базу мускуля из latin1 в utf8.

Что делал:

1. mysqldump base1 > old.sql (в дампе стоит: SET NAMES latin1)

2. iconv -f latin1 -t UTF-8 old.sql > new.sql

3. mysql base1 < new.sql

Если обращаться к базе с кодировкой utf8 - получаю крякозабры.

Спасибо.

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 52
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Наверное жесть в том что прошло 2 года никто ничего так и не написал   выкладываю утилиту из коммерческого набора для ABillS     http://abills.net.ua/forum/viewtopic.php?f=1&t=5795&p=2930

конечно выкладываю еще один из дополнительных комерческих утилит и дополнений   http://abills.net.ua/forum/viewtopic.php?f=1&t=7141     таких у коммерческих пользователей десятки и они эконо

latin1 - не кириллическая кодировка. То, что в ней хранится тест в 1251 - горе того, кто создавал базу. И именно поэтому поиск/сортировка по кириллическому тексту работает весьма загадочно.

Исходя из этого - нужно сделать следующее:

1) сдампить базу, с выводом дампа в latin1 (--default-character-set=latin1)

2) заменить везде latin1 на нужную кодировку (утф8) через sed

3) залить мускулом, указав --default-character-set=cp1251

 

Как-то так, если память не подводит.

Ссылка на сообщение
Поделиться на других сайтах

latin1 - не кириллическая кодировка. То, что в ней хранится тест в 1251 - горе того, кто создавал базу. И именно поэтому поиск/сортировка по кириллическому тексту работает весьма загадочно.

Исходя из этого - нужно сделать следующее:

1) сдампить базу, с выводом дампа в latin1 (--default-character-set=latin1)

2) заменить везде latin1 на нужную кодировку (утф8) через sed

3) залить мускулом, указав --default-character-set=cp1251

 

Как-то так, если память не подводит.

база создалась в далеком 2044 году, когда еще совсем плохо разбирался во всем ....

iconv -f latin1 -t UTF-8 | sed -e 's/ CHARSET=latin1/ CHARSET=UTF-8/g' > new.sql - так ?

 

SET NAMES CP1251

это в new.sql менять руцями ?

Ссылка на сообщение
Поделиться на других сайтах

база создалась в далеком 2044 году

Я умер? о_О

Опечатка 2004,

в то время создался сервак, и только менялось железо по мере необходимости, но тут надо менять кодировку и ипец ....

Ссылка на сообщение
Поделиться на других сайтах

Все на самом деле тривиально, но на удачу:

1. надо любым доступным методом (перебирая set names или без оного) вытянуть базу в cp1251.

2. сконвертить ее в utf-8

3. вставить в начало sql файла команду UTF-8

4. заливать обратно не под рутом, а под отдельным пользователем (была глюкофича, что под рутом изменения кодировок не работали, не знаю пофиксили уже или нет)

Ссылка на сообщение
Поделиться на других сайтах

помнится такая база была у UTM четвертых, третьих версий...

на вскидку из базы UTM табличка users:

 

mysqldump --default-character-set=latin1 UTM users -p | iconv -c -f cp1251 -t utf8

 

выведет на экран читаемые символы, если конечно консоль и мускуль утфные

это можно всё в файлик, в нем еще и таблички поправить (поменять latin1 на utf8) и залить назад

если база большая можно побить файликами, потом сконвертить, склеить и залить в мускуль

Разбить и склеить, я имею в виду split, cat (построчно). Все это делается не выходя с консоли, а то как-то видел как себе базы скачивали и пытались открывать текстовыми редакторами....

Ссылка на сообщение
Поделиться на других сайтах

Все это делается не выходя с консоли, а то как-то видел как себе базы скачивали и пытались открывать текстовыми редакторами....

Печально, когда админы не догадываются о существовании sed...

 

iconv не обязательно - указание --default-character-set для mysql делает свое дело вместо него, а ресурсов тратится меньше.

Ссылка на сообщение
Поделиться на других сайтах
iconv не обязательно - указание --default-character-set для mysql делает свое дело вместо него, а ресурсов тратится меньше.

default-character-set не делает конвертацию.

Вспомнил, где видел похожую задачу:

http://forum.nodeny.com.ua/index.php?topic=172.0

Там, кстати, есть пару интересных ссылок.

Ссылка на сообщение
Поделиться на других сайтах

Это база для Билинга Abills (базу в 2004 ставил по мануалу биллига)

Недавно разработчик перевел новые версии биллинга полностью на utf8, а скрипт конвертации не дает для свободного использования ....

Ссылка на сообщение
Поделиться на других сайтах
iconv не обязательно - указание --default-character-set для mysql делает свое дело вместо него, а ресурсов тратится меньше.

default-character-set не делает конвертацию.

Вспомнил, где видел похожую задачу:

http://forum.nodeny....php?topic=172.0

Там, кстати, есть пару интересных ссылок.

Спасибо , попробую)

Ссылка на сообщение
Поделиться на других сайтах

такая же беда =(

 

iconv не обязательно - указание --default-character-set для mysql делает свое дело вместо него, а ресурсов тратится меньше.
default-character-set не делает конвертацию. Вспомнил, где видел похожую задачу: http://forum.nodeny....php?topic=172.0 Там, кстати, есть пару интересных ссылок.
Спасибо , попробую)

 

как успехи?

Ссылка на сообщение
Поделиться на других сайтах

default-character-set не делает конвертацию.

Он указывает, в какой кодировке входной файл (если в файле не указана кодировка явно). Что собссно эквивалентно вызову iconv

 

Кстати, открою секрет: кодировка дампа совсем не обязательно должна совпадать с кодировкой данных, хранимых в таблицах :lol:

Ссылка на сообщение
Поделиться на других сайтах

такая же беда =(

 

iconv не обязательно - указание --default-character-set для mysql делает свое дело вместо него, а ресурсов тратится меньше.
default-character-set не делает конвертацию. Вспомнил, где видел похожую задачу: http://forum.nodeny....php?topic=172.0 Там, кстати, есть пару интересных ссылок.
Спасибо , попробую)

 

как успехи?

пока никак (((, после выполнения iconv -c -f cp1251 ( пробывал latin1 ) -t UTF-8 old.sql > new.sql и заливки new.sql в базу, не принимает пароль админа. Значит конвертация происходит не правильно ....

В самой freebsd есть кодировка UTF-8 , а в мускуле utf8.

Ссылка на сообщение
Поделиться на других сайтах

default-character-set не делает конвертацию.

Он указывает, в какой кодировке входной файл (если в файле не указана кодировка явно). Что собссно эквивалентно вызову iconv

 

Кстати, открою секрет: кодировка дампа совсем не обязательно должна совпадать с кодировкой данных, хранимых в таблицах :lol:

ну делал так:

mysqldump default-character-set=latin1 base > old.sql

mysql default-character-set=utf8 base < old.sql

не помогло

и как писал:NiTr0 выходит ситуация, что база находится в кодировке latin1 , данные фактически в windows-1251 ..

Ссылка на сообщение
Поделиться на других сайтах

пока никак (((, после выполнения iconv -c -f cp1251 ( пробывал latin1 ) -t UTF-8 old.sql > new.sql и заливки new.sql в базу, не принимает пароль админа. Значит конвертация происходит не правильно ....

В самой freebsd есть кодировка UTF-8 , а в мускуле utf8.

Ессно.

 

ну делал так:

mysqldump default-character-set=latin1 base > old.sql

mysql default-character-set=utf8 base < old.sql

не помогло

Ессно.

Нужно sed'ом сменить latin1 на utf8, посмотреть на предмет отсутствия указания кодировки в шапке, и заливать, указав кодировку cp1251 (в которой реально хранятся данные).

Ссылка на сообщение
Поделиться на других сайтах

пока никак (((, после выполнения iconv -c -f cp1251 ( пробывал latin1 ) -t UTF-8 old.sql > new.sql и заливки new.sql в базу, не принимает пароль админа. Значит конвертация происходит не правильно ....

В самой freebsd есть кодировка UTF-8 , а в мускуле utf8.

Ессно.

 

ну делал так:

mysqldump default-character-set=latin1 base > old.sql

mysql default-character-set=utf8 base < old.sql

не помогло

Ессно.

Нужно sed'ом сменить latin1 на utf8, посмотреть на предмет отсутствия указания кодировки в шапке, и заливать, указав кодировку cp1251 (в которой реально хранятся данные).

iconv -f latin1 -t utf8 | sed -e 's/ CHARSET=windows-1251/ CHARSET=utf8/g' old.sql > new.sql - так ?

Ссылка на сообщение
Поделиться на других сайтах

Нет.

1) в дампе БД charset будет latin1, collation - latin1_general_ci. Накой вы windows-1251 пытаеетесь менять на что-то (которого там вообще не может быть, ибо чарсет, даже если и есть, зваться будет cp1251)?

2)iconv испохабит блобы, что вы сами на себе уже проверили

Ссылка на сообщение
Поделиться на других сайтах

Нет.

1) в дампе БД charset будет latin1, collation - latin1_general_ci. Накой вы windows-1251 пытаеетесь менять на что-то (которого там вообще не может быть, ибо чарсет, даже если и есть, зваться будет cp1251)?

2)iconv испохабит блобы, что вы сами на себе уже проверили

1. в дампе: set names и default sharset стоит кодировка latin1.

2. так а как без iconv перекодировать ???

Ссылка на сообщение
Поделиться на других сайтах

1. в дампе: set names и default sharset стоит кодировка latin1.

names - указать cp1251 (в нем у вас данные в дампе), charset/collation - менять на utf8, если хотите хранить данные в БД в utf8.

 

2. так а как без iconv перекодировать ???

Если бы у вас база была в cp1251, для конвертации вам не нужно было бы даже дамп сливать в общем-то ;)

Повторяюсь, кодировка дампа и кодировка данных в таблице - 2 разных вещи, которые никоим образом не связаны.

Ссылка на сообщение
Поделиться на других сайтах

У меня была почти аналогичная проблема - mysql был в latin1 база в koi8, а надо было перевести в win1251.

Долго намучался с этой проблемой ... Решил ее с помощью внешнего php скрипта - с одной базы считывал, а в другую (на дугой сервер) записывал.

Ссылка на сообщение
Поделиться на других сайтах

У меня была почти аналогичная проблема - mysql был в latin1 база в koi8, а надо было перевести в win1251.

Долго намучался с этой проблемой ... Решил ее с помощью внешнего php скрипта - с одной базы считывал, а в другую (на дугой сервер) записывал.

а можно код скриптика ?

Ссылка на сообщение
Поделиться на других сайтах

у меня база сейчас в кодировке utf8 а таблицы в latin1_swedish_ci .... :wacko:.

теперь надо данные таблиц перекодировать в utf8

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...