Spec-Zone.ru › MySQL 5.7

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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/loading-tables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API