Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   load data infile (https://javascript.ru/forum/server/29632-load-data-infile.html)

kilogram 05.07.2012 15:35

load data infile
 
Читаю здесь http://phpclub.ru/mysql/doc/load-data.html про LOAD DATA. Пишу так:
load data infile '1.txt' into table cat;


Выдает такую ошибку на фото:

Что может быть?
Содержимое файла 1.txt
Код:

Андрей Пупкин 85

Таблица такая:
Код:

| cat  | CREATE TABLE `cat` (
  `number` int(11) NOT NULL AUTO_INCREMENT,
  `name1` varchar(20) DEFAULT NULL,
  `surname` char(12) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`number`),
  UNIQUE KEY `name1` (`name1`,`surname`,`age`)
) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 |


kilogram 05.07.2012 21:32

Сохранил ЮТФ-8 без БОМ, сработало вроде.
Попробывал написать в файле 1.txt:

Код:

38,Василий,Дятлов,91
39,Пол,Андерсон,91

Вот моя таблица:

Код:

------------------------------------------------------------
| cat  | CREATE TABLE `cat` (
  `number` int(11) NOT NULL AUTO_INCREMENT,
  `name1` varchar(20) DEFAULT NULL,
  `surname` char(12) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`number`),
  UNIQUE KEY `name1` (`name1`,`surname`,`age`)
) ENGINE=MyISAM AUTO_INCREMENT=41 DEFAULT CHARSET=utf8 |

Ведь здесь стоит уникальный ключ на каждое поле чтобы не повторялось. Почему вставились 2 записи, ведь в последнем поле age 2 раза повторяется 91? Почему уникальный ключ не сработал?*

kilogram 05.07.2012 23:51

Создал для теста таблицу dog:
Код:

| dog  | CREATE TABLE `dog` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |


Как вставлять записи из файла в базу данных в которой содержится первичный ключ с автоинкрементом, так чтобы не писать над каждой записью в файле - номер вставляемой записи, а так чтобы в таблице этот номер вставлялся сам?

Код:

1 Василий 91
2 Андерсон 18

Вот так работает, но приходится в файле нумеровать каждую вставляемую запись: 1, 2, 3, 4....

Код:

load data infile '1.txt' into table dog fields terminated by ' ';

kilogram 06.07.2012 00:33

Один нюанс заметил. При вставке в базу после этой строки, добавляются пробелы из-за terminated by ' ' , но парадокс, без неё не вставляется, а с ней вставляются пробелы. Как вставлять без пробелов?
Код:

load data infile '1.txt' into table dog fields terminated by '  ' (name,age)

kilogram 07.07.2012 12:41

Вот мой файл 1.txt



Проблемма что добавляются в базу данных пробелы, а мне нужно их убрать. Как написать так чтобы не добавлялись пробелы?

Если написать так запрос:
Код:

load data infile '1.txt' into table dog (name, age);
получится ошибка:

А если написать так:

Код:

load data infile '1.txt' into table dog fields terminated by  '  '(name,age);
добавляет с пробелом, фото ниже.



Как написать чтобы не добавляло пробелы в базу?

kilogram 09.07.2012 13:25

Ребята, кто-нибудь подскажите. Никто не знает?


Часовой пояс GMT +3, время: 10:50.