> For the complete documentation index, see [llms.txt](https://404dream.gitbook.io/mysql/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://404dream.gitbook.io/mysql/summary/creating-and-using-a-database/loading-data-into-a-table.md).

# 4.3.3 加载数据

创建表之后可以用LOAD DATA和INSERT语句来填充表内容。

假设你的pet记录可以做如下描述。 （注意，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';
```

（在运行OS X的Apple机器上，您可能要使用LINES TERMINATED BY' \r'。）

如果您愿意，可以在LOAD DATA语句中显式指定列值分隔符和行结束标记，但默认值为tabs和linefeed。这些足以使语句正确读取pet.txt文件。

如果语句失败，则很可能默认情况下MySQL安装没有启用本地文件功能。有关如何更改此信息，请参见第7.1.6节“带LOAD DATA LOCAL的安全问题”。

当您想一次添加一个新记录时，INSERT语句很有用。在其最简单的形式中，按照列在CREATE TABLE语句中列出的顺序，为每个列提供值。假设Diane得到一个名为“Puffball”的新hamster。您可以使用如下的INSERT语句添加一个新记录：

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

字符串和日期值在此处指定为带引号的字符串。此外，使用INSERT，您可以直接插入NULL以表示缺少的值。你不像使用LOAD DATA那样使用 \N。从这个例子中，您应该可以看到，使用INSERT语句会比LOAD DATA语句能够输入更过的内容。
