受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

2.4. 向表中填充行 #

INSERT语句用于向表中填充行:

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

请注意,所有数据类型的输入格式都相当直观。那些并非简单数值的常量通常必须 用单引号(')括起,就像这个例子一样。date类型 实际上可接受的格式相当灵活,不过在本教程中,我们将坚持使用这里展示的这种无歧义格式。

point类型要求一个坐标对作为输入,如下所示:

INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

到目前为止所用的语法要求你记住列的顺序。另一种语法允许你显式列出列:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
    VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

如果愿意,你可以按不同顺序列出列,甚至省略某些列,例如降水量未知时:

INSERT INTO weather (date, city, temp_hi, temp_lo)
    VALUES ('1994-11-29', 'Hayward', 54, 37);

许多开发者认为,与依赖隐含顺序相比,显式列出列是一种更好的风格。

请把上面展示的所有命令都输入一遍,这样你在下面各节中才有一些数据可供操作。

你也可以使用COPY从纯文本文件中装载大量数据。这通常更快, 因为COPY命令针对这种用途做了优化,不过它不像 INSERT那样灵活。例如:

COPY weather FROM '/home/user/weather.txt';

这里源文件的文件名必须在运行后端进程的机器上可见,而不能只对客户端可见,因为 该文件是由后端进程直接读取的。上面插入到 weather 表中的数据也可以从包含以下内容 的文件中插入(各值由制表符分隔):

San Francisco    46    50    0.25    1994-11-27
San Francisco    43    57    0.0    1994-11-29
Hayward    37    54    \N    1994-11-29

关于COPY命令的更多信息可见COPY

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。