3.3.3 将数据加载到 table 中
创建 table 后,需要填充它。 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 |
因为您是从一个空 table 开始的,所以填充它的一种简单方法是为每个动物创建一个包含一行的文本文件,然后使用单个语句将文件的内容加载到 table 中。
您可以创建一个文本文件pet.txt
,每行包含一个记录,其值由制 table 符分隔,并按在CREATE TABLE语句中列出的列的 Sequences 给出。对于缺少的值(例如未知的性别或仍在生活中的动物的死亡日期),可以使用NULL
值。要在文本文件中 table 示这些字符,请使用\N
(反斜杠,大写 N)。例如,惠斯勒小鸟的记录应如下所示(其中值之间的空格是单个制 table 符):
Whistler Gwen bird \N 1997-12-09 \N
要将文本文件pet.txt
加载到pet
table 中,请使用以下语句:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
如果您是使用\r\n
作为行终止符的编辑器在 Windows 上创建的文件,则应改用以下语句:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
(在运行 macOS 的 Apple 计算机上,您可能希望使用LINES TERMINATED BY '\r'
.)
您可以根据需要在LOAD DATA语句中显式指定列值分隔符和行尾标记,但是默认值为制 table 符和换行符。这些足以使该语句正确读取文件pet.txt
。
如果该语句失败,则可能是默认情况下您的 MySQL 安装未启用本地文件功能。有关如何更改此设置的信息,请参见第 6.1.6 节“ LOAD DATA LOCAL 的安全注意事项”。
当您想一次添加一个新记录时,INSERT语句很有用。以最简单的形式,您可以按CREATE TABLE语句中列的 Sequences 提供各列的值。假设黛安(Diane)有了一只名为“ Puffball”的新仓鼠。您可以使用INSERT语句添加新记录,如下所示:
mysql> INSERT INTO pet
VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
字符串和日期值在此处指定为带引号的字符串。另外,使用INSERT,您可以直接插入NULL
来 table 示缺失值。您不会像使用LOAD DATA那样使用\N
。
从此示例中,您应该能够看到,最初使用多个INSERT语句而不是单个LOAD DATA语句来加载记录时会涉及更多类型的 Importing。