SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.03.2012 15:36:25

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Проблема с импортом данных из файла

Есть таблица с такими свойствами:
http://ib2.keep4u.ru/s/2012/03/14/52/5282176044401b3b5230b13545ca430f.jpg

Текстовый файл с такой информацией:
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://ib3.keep4u.ru/s/2012/03/14/a6/a647f840b1248203a8f842a13feb69c4.jpg
В графическом редакторе выглядит так:
http://ib3.keep4u.ru/s/2012/03/14/17/1782e4137cf161910082a49e5849f38b.jpg
http://box.iptel.by/f/56247_880.jpg

Почему данные перенеслись из файла некорректно?

Отредактированно Atanych (14.03.2012 15:43:15)

Неактивен

 

#2 14.03.2012 15:43:15

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

А как Вы их переносите из текстового файла в базу? Через load data local infile?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 14.03.2012 15:44:19

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

Конечно
Load data local infile "D:event.txt" into table event;
Так выглядит строка.

Неактивен

 

#4 14.03.2012 15:46:27

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

Путь, к слову, стоит указывать все же в виде d:/event.txt.
Что именно на Ваш взгляд некорректно в переносе?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 14.03.2012 15:51:36

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

6, 7 строки, где должны быть расположены ячейки NULL в столбце remark.

Отредактированно Atanych (14.03.2012 15:51:54)

Неактивен

 

#6 14.03.2012 15:54:55

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

Вообще-то, как показывает Ваш же скрин http://box.iptel.by/f/56247_880.jpg
На шестой строке remark (где name = Bowser) равен NULL.
Для пущей наглядности попробуйте в командной строке не
select * from event;
а
select * from event\G


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 14.03.2012 16:04:49

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

Если по группам выводить, то все отлично. Но если вывести запрос, то выйдет вот что:
http://ib3.keep4u.ru/s/2012/03/14/ba/baa72eea85fc179d793e00d68582201d.jpg
Опять пропадает первая буква в слове kennel.
Да и запрос: select remark from event where type='kennel'; не выдает никаких значений. Следовательно в БД в столбце type нет значения kennel, я верно понимаю?

Отредактированно Atanych (14.03.2012 16:11:25)

Неактивен

 

#8 14.03.2012 16:10:50

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

Хм. А что показывает запрос select * from `even`t WHERE `name` = 'fang'\G?
И приложите дамп всей таблицы в виде текстового файла.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 14.03.2012 16:20:13

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

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). Самое лучшее лекарство от этого - закавычивать все строковые данные в текстовом исходном файле - не пожалеете wink. Ну и разделять их лучше не пробелами, а допустим точкой с запятой.

То есть как-то так:

"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'


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#10 14.03.2012 16:29:59

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

Я прошу прощения). Куда сохраняется дамп БД?
Я сделал дамп БД из командной строки: >bin>mysqldump petom -uroot -p

Неактивен

 

#11 14.03.2012 16:36:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проблема с импортом данных из файла

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

mysqldump petom -uroot -p > filename.sql

В этом случае дамп будет в папке bin, можно указать полное имя файла (включая его адрес)

Неактивен

 

#12 14.03.2012 16:50:34

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

deadka написал:

Самое лучшее лекарство от этого - закавычивать все строковые данные в текстовом исходном файле - не пожалеете

Так дело в том, что бывают задачи, где надо по какому-либо логфайлу составить БД. А закреплять в ковычки вручную несколько сотен строчек дело не из легких smile. Может есть другое решение проблемы?


Прикрепленные файлы:
Attachment Icon petom.sql, Размер: 3,627 байт, Скачано: 798

Неактивен

 

#13 14.03.2012 17:04:48

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

Попробуйте просто 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).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#14 15.03.2012 08:07:44

Atanych
Участник
Зарегистрирован: 14.03.2012
Сообщений: 9

Re: Проблема с импортом данных из файла

Cпасибо за ссылки, по ним я разобрался в данной проблеме.
Для корректного импорта, необходимо дописать Lines terminated by '\r\n'
Только я не совсем понял, \n - Означает перенос строки, а что означает \r?

Неактивен

 

#15 15.03.2012 12:23:29

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Проблема с импортом данных из файла

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


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson