Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: load data
 
 автор: kilogram   (05.07.2012 в 15:36)   письмо автору
 
 

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


Выдает такую ошибку на фото:
http://s1.ipicture.ru/uploads/20120705/zbjJdPRm.jpg
Что может быть?
Содержимое файла 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 |

  Ответить  
 
 автор: cheops   (05.07.2012 в 16:23)   письмо автору
 
   для: kilogram   (05.07.2012 в 15:36)
 

У вас кодировка не настроена, нужно в load data явно указать в какой кодировке будут поступать данные.

  Ответить  
 
 автор: kilogram   (05.07.2012 в 18:58)   письмо автору
 
   для: cheops   (05.07.2012 в 16:23)
 

Как указывается кодировка, там в статье не нашел как.

  Ответить  
 
 автор: kilogram   (05.07.2012 в 21:35)   письмо автору
 
   для: kilogram   (05.07.2012 в 18:58)
 

Сохранил ЮТФ-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:52)   письмо автору
 
   для: kilogram   (05.07.2012 в 21:35)
 

Создал для теста таблицу 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:32)   письмо автору
 
   для: kilogram   (05.07.2012 в 23:52)
 

Один нюанс заметил. При вставке в базу после этой строки, добавляются пробелы из-за terminated by ' ' , но парадокс, без неё не вставляется, а с ней вставляются пробелы. Как вставлять без пробелов?
load data infile '1.txt' into table dog fields terminated by '  ' (name,age) 

  Ответить  
 
 автор: cheops   (06.07.2012 в 06:56)   письмо автору
 
   для: kilogram   (06.07.2012 в 00:32)
 

А если указывать пустую строку, то получается ошибка, указанная выше или какая-то другая?

  Ответить  
 
 автор: cheops   (06.07.2012 в 06:56)   письмо автору
 
   для: kilogram   (05.07.2012 в 23:52)
 

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

PS Под новые вопросы лучше заводить новые темы.

  Ответить  
 
 автор: kilogram   (07.07.2012 в 12:41)   письмо автору
 
   для: cheops   (06.07.2012 в 06:56)
 

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

http://s2.ipicture.ru/uploads/20120707/BNs7pC5u.jpg

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

Если написать так запрос:
load data infile '1.txt' into table dog (name, age);

получится ошибка:
http://s1.ipicture.ru/uploads/20120707/KFr6TLI7.jpg
А если написать так:

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


добавляет с пробелом, фото ниже.

http://s2.ipicture.ru/uploads/20120707/ai2r1p0b.jpg

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования