bosh
Новичок
mysqldump, русские символы.
Имеется следующий тихий ужас, доставшийся по наследству.
Данные в базе данных находятся в cp1251. Хочется их оттуда вытащить.
mysqldump -u abash -p --default-character-set=cp1251 --skip-set-charset db_name
mysqldump -u abash -p --default-character-set=cp1251 db_name
Получаю такое:
INSERT INTO `catalog_metas` VALUES (2,1,1,'??????? ??????? ? ?????? ? ???????????','??????? ??????? ???????? ?????? ??????????
? ??????','??????? ??????? ? ?????? ? ??????? ???????????.','1h'),(3,1,4,'??????? ?????? ? ?????? ? ???????????',NULL,NULL,NUL
L);
по умолчанию:
mysqldump -u abash -p db_name
:>
INSERT INTO `catalog_metas` VALUES (2,1,1,'ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў Ìîñêâå ГЁ Ïîäìîñêîâüå','ïîêóГ
ЇГЄГ_ ïðîäГ_Г¦Г_ ГЄГўГ_ðòèðГ_ ÌîñêâГ_ Ïîäìîñêîâüå ГЄГіГЇГЁГІГј','ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў ГЊГ®
Г±ГЄГўГҐ ГЁ áëèæГ_ГҐГ¬ Ïîäìîñêîâüå.','1h'),(3,1,4,'ÏðîäГ_Г¦Г_ Г§Г¤Г_Г_ГЁГ© Гў Ìîñêâå ГЁ ÏîäìîñГ
ЄГ®ГўГјГҐ',NULL,NULL,NULL);
Что в целом конечно лучше, но не особенно.
Сама таблица
[SQL]
CREATE TABLE `links` (
`link_id` int(8) NOT NULL auto_increment,
`topic_id` int(8) default NULL,
`link_name` varchar(100) default NULL,
`link_html` text,
`comments` text,
PRIMARY KEY (`link_id`),
KEY `fk_links` (`topic_id`),
CONSTRAINT `fk_links` FOREIGN KEY (`topic_id`) REFERENCES `links_topics` (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/SQL]
Кодировки в базе в целом тоже не лучше:
show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
Но я если честно боюсь что-либо менять, не забекапив данные.
Никто не скажет, что можно сделать помимо:
"написать на php mysqldump и делать что угодно" ?
Имеется следующий тихий ужас, доставшийся по наследству.
Данные в базе данных находятся в cp1251. Хочется их оттуда вытащить.
mysqldump -u abash -p --default-character-set=cp1251 --skip-set-charset db_name
mysqldump -u abash -p --default-character-set=cp1251 db_name
Получаю такое:
INSERT INTO `catalog_metas` VALUES (2,1,1,'??????? ??????? ? ?????? ? ???????????','??????? ??????? ???????? ?????? ??????????
? ??????','??????? ??????? ? ?????? ? ??????? ???????????.','1h'),(3,1,4,'??????? ?????? ? ?????? ? ???????????',NULL,NULL,NUL
L);
по умолчанию:
mysqldump -u abash -p db_name
:>
INSERT INTO `catalog_metas` VALUES (2,1,1,'ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў Ìîñêâå ГЁ Ïîäìîñêîâüå','ïîêóГ
ЇГЄГ_ ïðîäГ_Г¦Г_ ГЄГўГ_ðòèðГ_ ÌîñêâГ_ Ïîäìîñêîâüå ГЄГіГЇГЁГІГј','ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў ГЊГ®
Г±ГЄГўГҐ ГЁ áëèæГ_ГҐГ¬ Ïîäìîñêîâüå.','1h'),(3,1,4,'ÏðîäГ_Г¦Г_ Г§Г¤Г_Г_ГЁГ© Гў Ìîñêâå ГЁ ÏîäìîñГ
ЄГ®ГўГјГҐ',NULL,NULL,NULL);
Что в целом конечно лучше, но не особенно.
Сама таблица
[SQL]
CREATE TABLE `links` (
`link_id` int(8) NOT NULL auto_increment,
`topic_id` int(8) default NULL,
`link_name` varchar(100) default NULL,
`link_html` text,
`comments` text,
PRIMARY KEY (`link_id`),
KEY `fk_links` (`topic_id`),
CONSTRAINT `fk_links` FOREIGN KEY (`topic_id`) REFERENCES `links_topics` (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/SQL]
Кодировки в базе в целом тоже не лучше:
show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
Но я если честно боюсь что-либо менять, не забекапив данные.
Никто не скажет, что можно сделать помимо:
"написать на php mysqldump и делать что угодно" ?
