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

Форум MySQL

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

 

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

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

тема: load data infile
 
 автор: emo   (14.07.2005 в 16:06)   письмо автору
 
 

load data infile "data.txt" into table db2.my_table;
как добавить дополнительную информацию в базу чтобы данные имеющиеся в базе не повторялись
как и какими параметрами можно пользоваться в данном случае?

   
 
 автор: Киналь   (14.07.2005 в 17:51)   письмо автору
 
   для: emo   (14.07.2005 в 16:06)
 

А просто INSERT INTO не получится? Или надо именно из файла?

   
 
 автор: Loki   (14.07.2005 в 17:55)   письмо автору
 
   для: Киналь   (14.07.2005 в 17:51)
 

А какая разница?
Считываются данные из файла, разбираются в массив, а из массива формируются sql запросы на добавление информации в базу.

   
 
 автор: cheops   (14.07.2005 в 19:51)   письмо автору
 
   для: emo   (14.07.2005 в 16:06)
 

Для этого следует добавить ключевое слово REPLACE, если вы хотите, чтобы уже существующие записи перезаписывались
LOAD DATA INFILE "data.txt" REPLACE INTO TABLE db2.my_table;

или IGNORE, если повторяющиеся записи должны просто отбрасываться
LOAD DATA INFILE "data.txt" IGNORE INTO TABLE db2.my_table;

   
 
 автор: Loki   (15.07.2005 в 10:55)   письмо автору
 
   для: cheops   (14.07.2005 в 19:51)
 

Ух ты! А что это за штука такая? Какой должен быть формат файла? Как вообще этим пользоваться? А то мне как раз такая и нужна:)

   
 
 автор: cheops   (15.07.2005 в 13:05)   письмо автору
 
   для: Loki   (15.07.2005 в 10:55)
 

Этот оператор осуществляет загрузку данных из файла - удобен при большом объёме данных, так работает он быстрее INSERT - формат файл можно настроить при помощи самого оператора. Пусть имеется файл newcatalog.txt с данными, разделёнными символом табуляции
1    Сетевые адаптеры
2    Программное обеспеченье
3    Мониторы
4    Периферия
5    CD-RW/DVD

Тогда загрузить файл в таблицу catalogs, можно при помощи запроса
mysql> LOAD DATA INFILE 'C:\\mysql5\\bin\\newcatalogs.txt'
    -> INTO TABLE catalogs;

Ключевое слово LINES позволяет задать символ начала и конца строки, при помощи конструкций STARTING BY и TERMINATED BY, соответственно. Так по умолчанию, строка в текстовом файле должна заканчиваться символом перевода строки \n. Однако при создании текстовых файлов в среде Windows строка заканчивается двумя символами \r\n, что может приводить к неправильной интерпретации файла данных и потери информации. При помощи конструкции TERMINATED BY можно переопределить символ конца строки.
mysql> LOAD DATA INFILE 'C:\\mysql5\\bin\\catalogs.txt'
    -> INTO TABLE catalogs LINES TERMINATED BY '\r\n';

Ключевое слово FIELDS позволяет задать порядок обработки полей, совместно с ним применяются следующие конструкции:
- TERMINATED BY — данная конструкция определяет символ разделитель между полями в строке, по умолчанию он равен символу табуляции \t, но может быть задан любой другой символ;
- ENCLOSED BY — данная конструкция определяет символ кавычек, которыми ограничиваются поля, по умолчанию равен пустой строке, т.е. кавычки не применяются;
- ESCAPED BY — используется для назначения символа экранирования в полях, по умолчанию принимает значение обратного слеша \;
Пусть формат текстового файла данных таков, что поля разделены запятыми, значения обрамлены двойными кавычками, а строки заканчиваются символом \r\n (Windows стиль).
"1","Сетевые адаптеры"
"2","Программное обеспеченье"
"3","Мониторы"
"4","Периферия"
"5","CD-RW/DVD"

Тогда, запрос, загружающий данные из такого файла может выглядеть так
mysql> LOAD DATA INFILE 'C:\\mysql5\\bin\\catalogs.txt'
    -> REPLACE INTO TABLE catalogs
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

   
 
 автор: Loki   (15.07.2005 в 14:10)   письмо автору
 
   для: cheops   (15.07.2005 в 13:05)
 

Оччень интересно! Спасибо!
Непременно воспользуюсь!

   
 
 автор: cheops   (15.07.2005 в 13:07)   письмо автору
 
   для: Loki   (15.07.2005 в 10:55)
 

Более того, вы можете формировать файлы при помощи оператора SELECT * INTO OUTFILE, который имеет схожий синтаксис. В теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4256 демонстрируется как при его помощи формировать полноценные SQL-дампы.

   
Rambler's Top100
вверх

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