3.3.3 Загрузка данных в таблицу
После создания таблицы необходимо заполнить ее. Для этого полезны операторы LOAD DATA и INSERT.
Предположим, что записи о ваших питомцах можно описать так, как показано здесь. (Обратите внимание, что MySQL ожидает даты в формате '; это может отличаться от того, к чему вы привыкли.)YYYY-MM-DD'
| имя | владелец | вид | пол | дата рождения | дата смерти |
|---|---|---|---|---|---|
| Пушистик | Гарольд | кошка | ж | 1993-02-04 | |
| Когти | Гвен | кошка | м | 1994-03-17 | |
| Буффа | Гарольд | собака | ж | 1989-05-13 | |
| Клык | Бенни | собака | м | 1990-08-27 | |
| Боузер | Диана | собака | м | 1979-08-31 | 1995-07-29 |
| Чирик | Гвен | птица | ж | 1998-09-11 | |
| Чирик | Гвен | птица | 1997-12-09 | ||
| Худой | Бенни | змея | м | 1996-04-29 |
Поскольку вы начинаете с пустой таблицы, простым способом заполнения является создание текстового файла, содержащего строку для каждого из ваших животных, а затем загрузка содержимого файла в таблицу с помощью одного оператора.
Вы можете создать текстовый файл pet.txt, содержащий по одной записи на строку, с разделителями значений табуляцией и в порядке, в котором столбцы были перечислены в операторе CREATE TABLE. Для пропущенных значений (например, неизвестного пола или даты смерти для животных, которые все еще живы), вы можете использовать NULL значения. Для их представления в текстовом файле используйте \N (обратный слэш, заглавная буква N). Например, запись для Чирика-птицы будет выглядеть следующим образом (где пробелы между значениями — один символ табуляции):
Whistler Gwen bird \N 1997-12-09 \N
Для загрузки текстового файла pet.txt в таблицу pet используйте этот оператор:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
Если вы создали файл в Windows с помощью редактора, использующего \r\n в качестве разделителя строк, вместо этого используйте следующий оператор:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
(На Apple-машине под управлением macOS, вероятно, потребуется использовать LINES TERMINATED BY '\r'.)
Вы можете явно указать разделитель значений столбцов и маркер конца строки в операторе LOAD
DATA, но значения по умолчанию — табуляция и перевод строки. Их достаточно для корректного чтения файла pet.txt.
Если оператор завершается ошибкой, вероятно, в вашей установке MySQL по умолчанию не включена возможность работы с локальными файлами. См. Раздел 6.1.6, «Рекомендации по безопасности для LOAD DATA LOCAL» для получения информации о том, как изменить это.
Если вам нужно добавлять новые записи по одной, оператор INSERT будет полезен. В самом простом виде вы предоставляете значения для каждого столбца в том порядке, в котором они были перечислены в операторе CREATE TABLE. Предположим, что у Дианы появился новый хомячок по имени «Пушистик». Вы можете добавить новую запись, используя оператор INSERT так:
mysql> INSERT INTO pet
VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Значения строк и дат задаются здесь как строковые значения в кавычках. Кроме того, с INSERT вы можете вставить NULL напрямую, чтобы представить пропущенное значение. Вы не используете \N, как это делается с LOAD DATA.
Из этого примера вы должны понять, что для загрузки записей в начальном состоянии потребуется гораздо больше набора текста, если использовать несколько операторов INSERT, а не один оператор LOAD DATA.
© 2025 Oracle
Licensed under the GPLv2 License.