如何获取PostgreSQL文档示例所用的官方测试数据?
PostgreSQL官方教程样本数据问题解决
核心需求
想要实操PostgreSQL官方文档中的示例,但缺少对应样本数据,无法对比命令执行效果,询问是否存在与文档所有示例匹配的官方样本数据或默认数据库。
具体问题场景
执行PostgreSQL 10文档中窗口函数章节的SQL示例时,出现表/列不存在错误:
示例SQL
SELECT depname, empno, salary, enroll_date FROM (SELECT depname, empno, salary, enroll_date, rank() OVER (PARTITION BY depname ORDER BY salary DESC, empno) AS pos FROM empsalary ) AS ss WHERE pos < 3;
错误信息
SQL Error [42703]: ERROR: column "enroll_date" does not exist
已尝试的解决方法
- Stack Builder中未找到样本数据安装选项
- 下载的PostgreSQL 10.23源码包内的
src/tutorial等目录不含所需样本数据 - 找到的第三方样本数据缺失
enroll_date列,且并非官方完整数据
解决方案
PostgreSQL官方教程的示例通常会在对应章节开头给出创建测试表并插入样本数据的SQL语句,你需要先执行这些前置SQL构建测试环境。以你提到的窗口函数章节为例,示例SQL之前的文档内容里包含创建empsalary表并插入数据的代码,其中包含enroll_date列:
CREATE TABLE empsalary ( depname text, empno integer, salary integer, enroll_date date ); INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('develop', 11, 5000, '2007-08-01'), ('develop', 12, 4200, '2007-08-01'), ('develop', 13, 4200, '2007-08-01'), ('personnel', 51, 3500, '2007-08-01'), ('personnel', 52, 3900, '2007-08-01'), ('sales', 1, 5000, '2007-08-01'), ('sales', 2, 4800, '2007-08-01'), ('sales', 3, 4800, '2007-08-01');
先执行上述SQL创建并填充empsalary表,再运行你提供的窗口函数查询,即可得到正确结果。
另外说明:PostgreSQL默认安装的postgres数据库为空,没有内置教程样本数据,所有教程示例都需要手动创建对应的测试表和数据。如果需要覆盖更复杂实操场景的官方样本集,可以使用PostgreSQL官方提供的dvdrental示例数据库,但它并非完全对应所有基础教程示例。
内容的提问来源于stack exchange,提问作者mvanle
相关产品推荐
相关产品推荐

