Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица с такими свойствами:
Текстовый файл с такой информацией:
Fluffy 1995-05-15 litter 4 kittens, 3 female, 1 male
Buffy 1993-06-23 litter 5 puppies, 2 female, 3 male
Buffy 1994-06-19 litter 3 puppies, 3 female
Chirpy 1999-03-21 vet needed beak straightened
Slim 1997-08-03 vet broken rib
Bowser 1991-10-12 kennel
Fang 1991-10-12 kennel
Fang 1998-08-28 birthday Gave him a new chew toy
Claws 1998-03-17 birthday Gave him a new flea collar
Whistler 1998-12-09 birthday First birthday
В командной строке выводит такую таблицу:
В графическом редакторе выглядит так:
http://box.iptel.by/f/56247_880.jpg
Почему данные перенеслись из файла некорректно?
Отредактированно Atanych (14.03.2012 15:43:15)
Неактивен
А как Вы их переносите из текстового файла в базу? Через load data local infile?
Неактивен
Конечно
Load data local infile "D:event.txt" into table event;
Так выглядит строка.
Неактивен
Путь, к слову, стоит указывать все же в виде d:/event.txt.
Что именно на Ваш взгляд некорректно в переносе?
Неактивен
6, 7 строки, где должны быть расположены ячейки NULL в столбце remark.
Отредактированно Atanych (14.03.2012 15:51:54)
Неактивен
Вообще-то, как показывает Ваш же скрин http://box.iptel.by/f/56247_880.jpg
На шестой строке remark (где name = Bowser) равен NULL.
Для пущей наглядности попробуйте в командной строке не
select * from event;
а
select * from event\G
Неактивен
Если по группам выводить, то все отлично. Но если вывести запрос, то выйдет вот что:
Опять пропадает первая буква в слове kennel.
Да и запрос: select remark from event where type='kennel'; не выдает никаких значений. Следовательно в БД в столбце type нет значения kennel, я верно понимаю?
Отредактированно Atanych (14.03.2012 16:11:25)
Неактивен
Хм. А что показывает запрос select * from `even`t WHERE `name` = 'fang'\G?
И приложите дамп всей таблицы в виде текстового файла.
Неактивен
Atanych написал:
Если по группам выводить, то все отлично. Но если вывести запрос, то выйдет вот что:
http://ib3.keep4u.ru/s/2012/03/14/ba/ba … 82201d.jpg
Опять пропадает первая буква в слове kennel.
Да и запрос: select remark from event where type='kennel'; не выдает никаких значений. Следовательно в БД в столбце type нет значения kennel, я верно понимаю?
Не вполне. Подозреваю, что в БД помимо самой строки заносится символ конца строки (обратите внимание на скрин, который показывает Mysql Query Browser). Самое лучшее лекарство от этого - закавычивать все строковые данные в текстовом исходном файле - не пожалеете . Ну и разделять их лучше не пробелами, а допустим точкой с запятой.
То есть как-то так:
"Fluffy";"1995-05-15";"litter";"4 kittens, 3 female, 1 male"
"Buffy";"1993-06-23";"litter";"5 puppies, 2 female, 3 male"
"Buffy";"1994-06-19";"litter";"3 puppies, 3 female"
load data from file fields ENCLOSED BY '"' terminated by ';' lines terminated by '\n'
Неактивен
Я прошу прощения). Куда сохраняется дамп БД?
Я сделал дамп БД из командной строки: >bin>mysqldump petom -uroot -p
Неактивен
В таком варианте никуда, отобразиться в командной строке. Нужно указать файл, в котором будет дамп.
mysqldump petom -uroot -p > filename.sql
В этом случае дамп будет в папке bin, можно указать полное имя файла (включая его адрес)
Неактивен
deadka написал:
Самое лучшее лекарство от этого - закавычивать все строковые данные в текстовом исходном файле - не пожалеете
Так дело в том, что бывают задачи, где надо по какому-либо логфайлу составить БД. А закреплять в ковычки вручную несколько сотен строчек дело не из легких . Может есть другое решение проблемы?
Неактивен
Попробуйте просто lines terminated by '\n' добавить в инструкцию load data - может помочь.
Просто в данном случае - поставьте себя на место mysql - ему же нужно как-то определять что куда относится )). Кавычки и разделитель спасают в данном случае. Ну и в-принцпе прочтите справку на load data infile - там много опций, может что-то наведет на размышления ( http://www.mysql.ru/docs/man/LOAD_DATA.html http://dev.mysql.com/doc/refman/5.1/en/load-data.html).
Неактивен
Cпасибо за ссылки, по ним я разобрался в данной проблеме.
Для корректного импорта, необходимо дописать Lines terminated by '\r\n'
Только я не совсем понял, \n - Означает перенос строки, а что означает \r?
Неактивен
Atanych написал:
Cпасибо за ссылки, по ним я разобрался в данной проблеме.
Для корректного импорта, необходимо дописать Lines terminated by '\r\n'
Только я не совсем понял, \n - Означает перенос строки, а что означает \r?
В windows и в linux разные переводы строк. В linux нужно сделать CR + LF ( \r\n), в windows просто LF (\n).
Подробнее см. http://ru.wikipedia.org/wiki/%D0%9F%D0% … 0%BA%D0%B8
Неактивен