4.3.3 Loading Data into a Table

创建表之后可以用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语句能够输入更过的内容。

results matching ""

    No results matching ""