|
|
|
| load data infile "data.txt" into table db2.my_table;
как добавить дополнительную информацию в базу чтобы данные имеющиеся в базе не повторялись
как и какими параметрами можно пользоваться в данном случае? | |
|
|
|
|
|
|
|
для: emo
(14.07.2005 в 16:06)
| | А просто INSERT INTO не получится? Или надо именно из файла? | |
|
|
|
|
|
|
|
для: Киналь
(14.07.2005 в 17:51)
| | А какая разница?
Считываются данные из файла, разбираются в массив, а из массива формируются sql запросы на добавление информации в базу. | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: cheops
(14.07.2005 в 19:51)
| | Ух ты! А что это за штука такая? Какой должен быть формат файла? Как вообще этим пользоваться? А то мне как раз такая и нужна:) | |
|
|
|
|
|
|
|
для: 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';
|
| |
|
|
|
|
|
|
|
для: cheops
(15.07.2005 в 13:05)
| | Оччень интересно! Спасибо!
Непременно воспользуюсь! | |
|
|
|
|
|
|
|
для: Loki
(15.07.2005 в 10:55)
| | Более того, вы можете формировать файлы при помощи оператора SELECT * INTO OUTFILE, который имеет схожий синтаксис. В теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4256 демонстрируется как при его помощи формировать полноценные SQL-дампы. | |
|
|
|