Делаю выгрузку клиентов на Perl из mysql в файлик под Linux.
Открываю файл, в нем где попало вылезает "^M".
Просто удалить эти символы, типа col -bx < dosfile > newfile не кошерно — информация перешла на другую строку, а нужно сохранить структуру. Можно ручками конечно, но это не спортивно.
Необходимо как-то пофиксить эти символы в самой БД. Кто нибудь спотыкался об такое уже?
«информация перешла на другую строку, а нужно сохранить структуру»
У вас дело такое:
^М это (скорее всего) \r (Carriage return), это знак нового рядка, всего есть 3 знака нового рядка: \r (Mac), \r\n (Win), \n (*nix).
Если реально не нравится \r, используйте: dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_replace
perl -p -i -e 's/^M//g' dosfile
только тут хитрость для ввода символа ^M необходимо нажать клавишу Ctrl и удерживая ее нажать v и m, должен получится символ ^M
Как удалить символы я знаю — писал выше. Вопрос в том, что данные перебежали на следующую строку в некоторых местах, там где этот знак. В некоторых местах он просто в тексте попадается.
Т.е мало просто удалить знак.
Надо вернуть данные с предыдущей строки на строку выше чтобы все было в одну строку.
Сейчас данные в файле выглядят примерно так
А должен выглядеть в одну строчку так:
login|adress|tp_id|ip_addr|phone_number|adress|Безлимитный 10M физлица
Засада еще в том, что эти символы произвольно попадаются не в конце строки, а в каком-то еще поле.
Т.е убрать символ ^M и удалить перевод строки там где он встречается нельзя.
Посему вопрос — может в mysql можно пошаманить как-то?