Spec-Zone.ru › MySQL 8.4

5.3.3 Загрузка данных в таблицу

После создания таблицы необходимо заполнить её. Для этого полезны операторы LOAD DATA и INSERT.

Предположим, что записи о ваших питомцах можно описать так, как показано ниже. (Обратите внимание, что MySQL ожидает даты в формате 'YYYY-MM-DD'; это может отличаться от того, к чему вы привыкли.)

name owner species sex birth death
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Diane dog m 1979-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29

Так как вы начинаете с пустой таблицы, простым способом её заполнения является создание текстового файла, содержащего строку для каждого вашего животного, а затем загрузка содержимого файла в таблицу с помощью одного оператора.

Вы можете создать текстовый файл pet.txt, содержащий по одной записи в каждой строке, со значениями, разделенными табуляцией, в порядке, в котором столбцы были перечислены в операторе CREATE TABLE. Для пропущенных значений (например, неизвестного пола или дат смерти животных, которые всё ещё живы), можно использовать NULL значения. Для их представления в текстовом файле используйте \N (обратный слэш, заглавная буква N). Например, запись для Whistler (птица) будет выглядеть так (где пробел между значениями — это один символ табуляции):

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 отключена поддержка локальных файлов по умолчанию. См. Раздел 8.1.6, «Меры безопасности для LOAD DATA LOCAL» для получения информации о том, как изменить это.

Когда вам нужно добавлять новые записи по одной, оператор INSERT будет полезен. В самом простом виде, вы предоставляете значения для каждого столбца в том порядке, в котором они были перечислены в операторе CREATE TABLE. Предположим, что у Дианы появился новый хомяк по кличке «Puffball». Вы можете добавить новую запись с помощью оператора 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-8.4-en/loading-tables.html

Spec-Zone.ru

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