Навигация

Поиск по Сайту

Партнеры

Самоучитель. Книги.

Статистика

    Каталог@Mail.ru - каталог ресурсов интернет

Загрузка данных в таблицу 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

Вы можете определять разделитель значений столбцов и маркер конца строки в инструкции 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 сберегла много времени.