2.7: Загрузка данных в таблицу MySQL
Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Загрузка данных в таблицу MySQL
После создания таблицы вы должны заполнить ее данными. Инструкции LOAD DATA и INSERT полезны для этого. Как они работают, поговорим чуть позже, а пока давайте подумаем о данных, которые надо ввести в таблицу. Как именно они выглядят?
Предположим, что ваши записи о живности могут быть описаны, как показано ниже. Заметьте, что MySQL ожидает даты в формате год-месяц-день, это может быть отлично от того, к чему вы привыкли. Год лучше вводить в виде 4 цифр. MySQL имеет довольно сложный алгоритм, чтобы правильно обрабатывать значения лет, состоящие из двух цифр, но сейчас вам незачем разбираться еще и в этом, поэтому давайте вводить данные однозначно. Все данные о животных для нашего примера показаны в таблице 2.2:
Таблица 2.2. Данные о животных
name | owner | species | sex | birth | death |
Fluffy | Harold | кошка | f | 1993-02-04 | |
Fluffy | Harold | кошка | f | 1993-02-04 | |
Claws | Gwen | кошка | m | 1994-03-17 | |
Buffy | Harold | собака | f | 1989-05-13 | |
Fang | Benny | собака | m | 1990-08-27 | |
Bowser | Diane | собака | m | 1989-08-31 | 1995-07-29 |
Chirpy | Gwen | птичка | f | 1998-09-11 | |
Whistler | Gwen | птичка | 1997-12-09 | ||
Slim | Benny | змея | m | 1996-04-29 |
Поскольку вы начинаете работу с пустой таблицей, самый простой способ заполнить ее состоит в том, чтобы создать текстовый файл, содержащий строку для каждого из ваших животных, а затем загрузить содержимое файла в таблицу всего одной инструкцией.
Вы могли бы создать текстовый файл pet.txt, содержащий одну запись на строку, со значениями, отделяемыми позициями табуляции, указанными в том порядке, в котором столбцы были перечислены в инструкции CREATE TABLE. Для отсутствующих значений (типа неизвестного пола или дат гибели для животных, которые все еще живут), вы можете использовать значения NULL. Чтобы представить их в текстовом файле, используйте метку. Например, запись о птичке Whistler выглядит примерно так (пробелом я обозначил табуляцию):
Whistler Gwen птичка 1997-12-09
Чтобы загрузить данные из текстового файла pet.txt, расположенного на локальном компьютере (клиенте), а не на сервере, в таблицу pet, используйте команду LOAD DATA:
mysql> LOAD DATA LOCAL INFILE «pet.txt» INTO TABLE pet;
Ключевые слова имеют следующий смысл. INFILE определяет строку, которая является именем файла, из которого надо прочитать данные. Поскольку имя является строкой, оно заключено в кавычки, иначе MySQL будет пытаться его вычислить, как числовое выражение. LOCAL указывает, что файл надо искать на клиентской системе, а не на сервере. INTO TABLE предписывает загрузить данные в таблицу, имя которой указано сразу после слова TABLE (через пробел).
Вы можете определять разделитель значений столбцов и маркер конца строки в инструкции LOAD DATA явно, если вы желаете, но значениями по умолчанию как раз и являются табуляция и перевод строки. Их достаточно, чтобы правильно прочитать файл pet.txt, а большего вам сейчас и не надо.
Когда вы хотите добавить новые записи по одной, полезна инструкция INSERT. В самой простой ее форме вы обеспечиваете значения для каждого столбца в том порядке, в котором столбцы были перечислены в инструкции CREATE TABLE. Предположим, Что Diane получила в подарок нового хомяка Puffball. Вы можете добавить новую запись, используя инструкцию INSERT, примерно так:
mysql> INSERT INTO pet
-> VALUES ("Puffball",'Diane','хомяк','f','1999-03-30','NULL');
Ключевые слова здесь также не отличаются особой сложностью. INTO pet определяет, в какую таблицу идет вставка. VALUES задает список вставляемых значений для новой записи в таблице. Значения перечисляются через запятые и все вместе берутся в скобки.
Обратите внимание, что строки и значение даты определены как строки. Вы можете вставлять NULL непосредственно (не как строку), чтобы представить отсутствие значения.
Из этого примера вы видите, что для непосредственной загрузки в таблицу пришлось бы печатать довольно много. Инструкция LOAD DATA сберегла много времени.