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.