MySQL 8.4 参考手册  /  ...  /  将数据加载到表中

5.3.3 将数据加载到表中

创建表后,您需要填充它。LOAD DATAINSERT 语句对此很有用。

假设您的宠物记录可以描述如下。(请注意,MySQL 期望日期采用 'YYYY-MM-DD' 格式;这可能与您习惯的格式不同。)

姓名 主人 物种 性别 出生日期 死亡日期
Fluffy Harold 雌性 1993-02-04
Claws Gwen 雄性 1994-03-17
Buffy Harold 雌性 1989-05-13
Fang Benny 雄性 1990-08-27
Bowser Diane 雄性 1979-08-31 1995-07-29
Chirpy Gwen 雌性 1998-09-11
Whistler Gwen 1997-12-09
Slim Benny 雄性 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';

(在运行 macOS 的 Apple 机器上,您可能希望使用 LINES TERMINATED BY '\r'。)

如果您愿意,可以在 LOAD DATA 语句中明确指定列值分隔符和行尾标记,但默认值为制表符和换行符。这些足以使语句正确读取文件 pet.txt

如果语句失败,则可能是您的 MySQL 安装默认情况下未启用本地文件功能。有关如何更改此设置的信息,请参见 第 8.1.6 节“LOAD DATA LOCAL 的安全注意事项”

当您想一次添加一条新记录时,INSERT 语句很有用。在最简单的形式中,您需要为每个列提供值,顺序与 CREATE TABLE 语句中列出的顺序相同。假设 Diane 得到了一只名为 Puffball 的新仓鼠。您可以使用如下所示的 INSERT 语句添加新记录

mysql> INSERT INTO pet
       VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

字符串和日期值在此处指定为带引号的字符串。此外,使用 INSERT,您可以直接插入 NULL 来表示缺失值。您不需要像使用 LOAD DATA 那样使用 \N

从这个例子中,您应该能够看到,使用多条 INSERT 语句而不是一条 LOAD DATA 语句来初始加载记录会涉及更多输入。