使用 INSERT 语句向表中追加数据行:
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
请注意,所有数据类型的字面量输入格式都非常直观。非纯数字的常量通常必须使用单引号(')包裹,如上例所示。date 日期类型支持非常宽泛的输入格式,但在本教程中我们坚持使用此处展示的无歧义标准 ISO 格式。
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';
由于该命令是由数据库服务端后台进程直接读取文件,因此源文件必须存放于数据库服务器所在的物理主机上,且对数据库运行用户具有读权限。刚才插入到天气表中的记录,也可以通过包含以下制表符分隔内容的文本文件直接批量导入:
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。