我遇到了作业问题。任务是:
以下是此作业所需的表结构:
DROP TABLE unesco_raw;
CREATE TABLE unesco_raw
(name TEXT, description TEXT, justification TEXT, year INTEGER,
longitude FLOAT, latitude FLOAT, area_hectares FLOAT,
category TEXT, category_id INTEGER, state TEXT, state_id INTEGER,
region TEXT, region_id INTEGER, iso TEXT, iso_id INTEGER);
CREATE TABLE category (
id SERIAL,
name VARCHAR(128) UNIQUE,
PRIMARY KEY(id)
);
... 需要更多表格
要为此分配加载 CSV 数据,请使用以下复制命令。添加 HEADER 会导致 CSV 加载程序跳过 CSV 文件中的第一行。\copy 命令必须是一长行。\copy unesco_raw(name,description,justification,year,longitude,latitude,area_hectares,category,state,region,iso) FROM 'whc-sites-2018-small.csv' WITH DELIMITER ',' CSV HEADER; 通过将条目添加到每个查找表(类别等),然后将外键列添加到 unesco_raw 表来规范化 unesco_raw 表中的数据。然后创建一个名为 Unesco 的新表,删除所有未规范化的冗余文本列,如类别。如果您在测试中多次运行该程序或使用不同的文件,请确保在每次运行前清空数据。
自动分级机将查看 UNESCO 表。
为了给这个作业评分,程序会在你的数据库上运行一个这样的查询,并寻找它期望看到的数据:
SELECT unesco.name, year, category.name, state.name, region.name, iso.name
FROM unesco
JOIN category ON unesco.category_id = category.id
JOIN iso ON unesco.iso_id = iso.id
JOIN state ON unesco.state_id = state.id
JOIN region ON unesco.region_id = region.id
ORDER BY year, unesco.name
LIMIT 3;
autograder 提供的错误是:Row 1 column 1 expected Aachen Cathedral , got Aachen Cathedral
我所做的代码是创建表:教科文组织、iso、年份、类别、州和地区。此外,使用其他表中的外键将值插入到 UNESCO 表的末尾。
例子:
Insert into unesco (name,iso_id,region_id,state_id,category_id,year) values ('Aachen Cathedral',1,3,1,1,1978);
insert into unesco (name,iso_id,region_id,state_id,category_id,year) values ('City of Quito',2,1,2,1,1978);
insert into unesco (name,iso_id,region_id,state_id,category_id,year) values ('Gal pagos Islands',3,2,3,2,1978);
你能帮忙吗?
我正在使用 PostgreSQL。






