Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Loading Data into a Table

5.3.3 将数据加载到表中

创建表后,您需要填充它。LOAD DATAINSERT 语句非常有用。

假设您的宠物记录可以如下所示。(注意 MySQL 期望日期在 'YYYY-MM-DD' 格式中;这可能与您所习惯的不同。)

name owner species sex birth death
Fluffy 哈罗德 f 1993-02-04
Claws 格温 m 1994-03-17
Buffy 哈罗德 f 1989-05-13
Fang 本尼 m 1990-08-27
Bowser 戴安 m 1979-08-31 1995-07-29
Chirpy 格温 f 1998-09-11
Whistler 格温 1997-12-09
Slim 本尼 m 1996-04-29

因为您从空表开始,所以一种简单的方法是创建一个文本文件,其中每行对应一个动物,然后使用单个语句将文件内容加载到表中。

您可以创建一个文本文件 pet.txt,其中每行对应一个记录,值用制表符分隔,顺序与 CREATE TABLE 语句中列出的列相同。对于缺失值(例如未知性别或仍然在世的动物的死亡日期),您可以使用 NULL 值。在文本文件中,使用 \N(反斜杠,capital-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 安装没有启用本地文件功能。请参阅 第 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 值来表示缺失值,而不需要像 LOAD DATA 那样使用 \N

从这个示例中,您应该能够看到,使用多个 INSERT 语句来加载初始记录将需要更多的输入,而不是使用单个 LOAD DATA 语句。