Mysql将数据加载到表中

来自泡泡学习笔记
跳到导航 跳到搜索

创建完表格后,您需要填充它。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';
(在运行 macOS 的 Apple 计算机上,您可能希望使用 LINES TERMINATED BY '\r'。)

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

如果该语句失败,则可能是因为您的 MySQL 安装默认未启用本地文件功能。

当您想逐个添加新记录时,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 语句更加方便。