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 |
Спустя 10 минут, 5 секунд (5.07.2012 - 14:46) rooor написал(а):
в таблице 4 поля, а для вставки 3?
Спустя 4 минуты, 37 секунд (5.07.2012 - 14:51) kilogram написал(а):
Вот мой файл 1.txt
Скажите, что там не так?
Скажите, что там не так?

Спустя 1 час, 27 минут, 20 секунд (5.07.2012 - 16:18) Placido написал(а):
Разделитель полей по умолчанию - символ табуляции, если поля отделяются не табом, то нужно указывать разделитель явно:
А так MySQL воспринимает всю строку как одно поле и пытается впихнуть его в `number`.
LOAD DATA INFILE ... FIELDS TERMINATED BY ', '
А так MySQL воспринимает всю строку как одно поле и пытается впихнуть его в `number`.
Спустя 1 час, 33 минуты, 20 секунд (5.07.2012 - 17:52) kilogram написал(а):
Написал так:
Выдает такую ошибку:

load data infile '1.txt' into table cat FIELDS TERMINATED BY ','
Выдает такую ошибку:

Спустя 22 минуты, 20 секунд (5.07.2012 - 18:14) Placido написал(а):
Проверьте, чтобы совпадали кодировки файла и таблицы.
Спустя 15 минут (5.07.2012 - 18:29) kilogram написал(а):
Кодировку файла 1.txt поставил в ЮТФ-8, вот кодировка таблицы и базы.
Уже выдает такую ошибку:
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
Уже выдает такую ошибку:

Спустя 1 час, 12 минут, 30 секунд (5.07.2012 - 19:41) alexbel2404 написал(а):
сохрани в utf-8 без BOM
Спустя 36 минут, 15 секунд (5.07.2012 - 20:18) kilogram написал(а):
А вставилось с кавычками почему когда сохранил без бома?
Спустя 16 минут, 58 секунд (5.07.2012 - 20:35) kilogram написал(а):
Сохранил ЮТФ-8 без БОМ, сработало вроде.
Попробывал написать в файле 1.txt:
Вот моя таблица:
Ведь здесь стоит уникальный ключ на каждое поле чтобы не повторялось. Почему вставились 2 записи, ведь в последнем поле age 2 раза повторяется 91? Почему уникальный ключ не сработал?*
Попробывал написать в файле 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? Почему уникальный ключ не сработал?*
Спустя 2 часа, 16 минут, 35 секунд (5.07.2012 - 22:51) kilogram написал(а):
Создал для теста таблицу dog:
Как вставлять записи из файла в базу данных в которой содержится первичный ключ с автоинкрементом, так чтобы не писать над каждой записью в файле - номер вставляемой записи, а так чтобы в таблице этот номер вставлялся сам?
Вот так работает, но приходится в файле нумеровать каждую вставляемую запись: 1, 2, 3, 4....
| 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 ' ';
Спустя 41 минута, 5 секунд (5.07.2012 - 23:32) kilogram написал(а):
Один нюанс заметил. При вставке в базу после этой строки, добавляются пробелы из-за terminated by ' ' , но парадокс, без неё не вставляется, а с ней вставляются пробелы. Как вставлять без пробелов?
load data infile '1.txt' into table dog fields terminated by ' ' (name,age)
Спустя 7 минут, 8 секунд (5.07.2012 - 23:39) Placido написал(а):
Цитата (kilogram @ 5.07.2012 - 22:51) |
Как вставлять записи из файла в базу данных в которой содержится первичный ключ с автоинкрементом, так чтобы не писать над каждой записью в файле - номер вставляемой записи, а так чтобы в таблице этот номер вставлялся сам? |
Перечислить имена полей после имени таблицы:
load data infile '1.txt' into table dog (name, age) fields terminated by ' ';
Спустя 40 минут, 32 секунды (6.07.2012 - 00:20) kilogram написал(а):
Если так написать выдает что ошибка в синтаксисе.

Спустя 27 минут, 17 секунд (6.07.2012 - 00:47) Placido написал(а):
Да, этот вариант будет работать только с символами табуляции в качестве разделителей, "fields terminated by и т.д." нужно убрать:
load data infile '1.txt' into table dog (name, age);
Спустя 1 день, 10 часов, 24 минуты, 5 секунд (7.07.2012 - 11:11) kilogram написал(а):
Если убрать fields terminated by перестает срабатывать, выдает такое:

Спустя 27 минут, 27 секунд (7.07.2012 - 11:39) kilogram написал(а):
Вот мой файл 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);
добавляет с пробелом, фото ниже.

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