POSTGRES - 从文件复制,设置一个不在FILE中的值

时间:2015-12-01 09:40:14

标签: postgresql csv

我将.csv中的数据复制到我的postgres表中。我的命令如下:

 COPY w_spare_part_cze (country, manufacturer, model, submodel, guid, model_options, oen, price, description) FROM '/tmp/SpareParts.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"';

这看起来很酷,但是在我的数据库中我有列country,但在我的.csv我根本没有这个列(只有制造商,模型,子模型,guid,model_options等等。 。)

只要此IMPORT的所有值都具有相同的国家/地区值。有没有办法如何在没有本地上传到另一个表的情况下设置IT,添加具有默认值的新列,转储并再次上传到真实表。

感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

country中的字段列表中删除copy

COPY w_spare_part_cze (manufacturer, model, submodel, guid, model_options, oen, price, description) 
FROM '/tmp/SpareParts.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"';

并用所需的值填充该列:

UPDATE w_spare_part_cze 
SET country = 'Japan';

如果文件包含nullcountry,则临时删除非空约束:

ALTER TABLE w_spare_part_cze ALTER country DROP NOT NULL;

COPY w_spare_part_cze (country, manufacturer, model, submodel, guid, model_options, oen, price, description) 
FROM '/tmp/SpareParts.csv' WITH CSV HEADER DELIMITER ',' QUOTE '"';

UPDATE w_spare_part_cze 
SET country = 'Japan';

ALTER TABLE w_spare_part_cze ALTER country SET NOT NULL;