проблемы с кодировками sql-дампов

Biglem

на меня повесили админскую работу
так что, возможно это часто встречающаяся проблема, но я её не смог побороть
суть такова
есть БД1: в ней хранятся данные, кодировка koi8-r
есть БД2: в ней хранятся данные в кодировке cp1251 (хотя везде выставлена обычная latin_swedish)
на сами бд как я понимаю выставлена кодировка utf-8, т.к. при снятии дампа, получаем файлы в юникоде в которых находятся крокозяблы соответствующих кодировок
требуется: данные из БД2 добавить в БД1
возникает проблема несоответствия кодировок
пытался бороть через iconv - ничего не получается
либо я что-то не так делаю, либо.. скорее всего я делаю что-то не так
в общем, помогите
проект у них горит
а с меня его требуют потому, что у нас на фирме нет админа и единственный, кто умеет в юнихе работать - я
я ещё кину тогда сюда вывод консоли:
portal$ locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=
portal$ head -n70 localhost_dump_remote_cp1251.sql|tail -n2
INSERT INTO `b_adv_banner` VALUES (4, 1, 'LEFT', 'PUBLISHED', NULL, 'Áàííåð ñëåâà ñ îãðàíè÷åíèÿìè ïî ïîêàçàì', NULL, 'Y', 'ru', 100, 100000, 5000, 20137, 'Y', 1, NULL, 65, NULL, '2005-11-04 19:50:38', '2003-06-27 16:47:32', '2001-06-26 00:00:00', '2009-06-30 00:00:00', 998, 'Áèòðèêñ: Óïðàâëåíèå ñàéòîì', 'http://www.bitrixsoft.ru?referer1=trial&referer2=100x100_wf', NULL, NULL, 'html', 'Advert_out', 'Left_banner', '', NULL, NULL, NULL, '0000-00-00 00:00:00', NULL, '2004-02-19 12:58:20', NULL);
INSERT INTO `b_adv_banner` VALUES (5, 1, 'LEFT', 'PUBLISHED', NULL, 'Left banner in English', '', 'Y', 'en', 100, NULL, NULL, 2678, 'Y', 0, NULL, 27, NULL, '2005-11-06 15:45:42', NULL, '2003-07-09 00:00:00', NULL, 996, 'Bitrix Site Manager', 'http://www.bitrixsoft.com?r1=trial4&r2=rek_en', '', NULL, 'html', 'rek_b', 'go', '#BANNER_NAME#', NULL, NULL, NULL, '0000-00-00 00:00:00', NULL, '2005-01-24 21:34:33', 1);
portal$ file localhost_dump_remote_cp1251.sql
localhost_dump_remote_cp1251.sql: UTF-8 Unicode text, with very long lines
portal$ iconv -f utf-8 -t cp1251 localhost_dump_remote_cp1251.sql > cp1251.txt
iconv: localhost_dump_remote_cp1251.sql: cannot convert
такая вот хрень

skvoria

Не совсем понял, что значит "на сами бд выставлена кодировка utf-8" в то время как "в ней хранятся данные, кодировка koi8-r"
Скорее всего, ты имел в виду нечто следующее: таблицы создавались с latin1, но при дампе прога-дампер пытается экспортнуть данные в юникоде. Это вероятнее всего лечится указанием спецключика (типа disable-set-charset и ему подобных)
Что за БД кстати?

Biglem

БД mysql
насчёт кодировки
phpmyadmin выдаёт мне следующее
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_general_ci
попробую щас всякие опции поуказывать, конечно

dgaf

версии одинаковые? какие?

Biglem

версии не совсем одинаковые
ДБ1 - 4.1.15
ДБ2 - 4.1.11
но я бы просто хотел узнать, как мне перекодировать текст из cp1251 в koi8-r, если сами текстовые файлы в utf-8
почему iconv вылетает?
можно ли это узнать?
может там смешение кодировок
меня интересует только эта абстрактная проблема, независимо от баз
PS: попутный вопрос полегче - кто помнит, как в виме перейти на конкретную позицию в файле (offset)? Не строчку, а позицию во всём в файле. То есть, анпример, символ 25342.

dgaf

mysqldump --default-character-set=
пробовал?
что стоит в my.cnf в секции [mysqld]
default-character-set= ?
что в начале дампа в строке set names ?

skvoria

Ну насколько я понял, вся задача сводится к тому, чтобы слить дамп в коях, айКонвом перегнать дамп в вин1251 и загнать в другую базу. Насчет пхпМайАдмин не уверен, ботай шелловый mysqldump
А вот по поводу того, почему вылетает iconv - ничего сказать не могу

Sharp

почему iconv вылетает?
When option -c is given, characters that cannot be converted are
silently discarded, instead of leading to a conversion error.
(с) man iconv

Biglem

короче, у меня нет другого доступа кроме как через майадмин ;(
похоже на то, что в этом огромном дампе присутствуют данные и cp1251 (в основном) и koi8r - так что побороть его без ручного поиска вряд ли удастся ;(

dgaf

ага, в результате часть символов удалятся
например, с буквой "я" иногда такое бывает
Оставить комментарий
Имя или ник:
Комментарий: