05.07.2012, 15:35
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
load data infile
Читаю здесь http://phpclub.ru/mysql/doc/load-data.html про LOAD DATA. Пишу так:
load data infile '1.txt' into table cat;
Выдает такую ошибку на фото:
Что может быть?
Содержимое файла 1.txt
Таблица такая:
Код:
|
| 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 | |
|
|
05.07.2012, 21:32
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Сохранил ЮТФ-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? Почему уникальный ключ не сработал?*
|
|
05.07.2012, 23:51
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Создал для теста таблицу 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 ' '; |
|
|
06.07.2012, 00:33
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Один нюанс заметил. При вставке в базу после этой строки, добавляются пробелы из-за terminated by ' ' , но парадокс, без неё не вставляется, а с ней вставляются пробелы. Как вставлять без пробелов?
Код:
|
load data infile '1.txt' into table dog fields terminated by ' ' (name,age) |
|
|
07.07.2012, 12:41
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Вот мой файл 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); |
добавляет с пробелом, фото ниже.
Как написать чтобы не добавляло пробелы в базу?
|
|
09.07.2012, 13:25
|
Профессор
|
|
Регистрация: 19.03.2012
Сообщений: 163
|
|
Ребята, кто-нибудь подскажите. Никто не знает?
|
|
|
|