2015-12-01 17 views
0

我將我的.csv中的數據複製到我的postgres表中。我的命令看起來像:POSTGRES - 從文件中複製一個不在FILE中的值的文件

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

從字段列表中copy刪除country

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; 
+0

嗨@klin,是啊,這是很好的方式,如何做到這一點,但它甚至不希望我這個導入CSV,因爲它會創建國家= NULL列其中不符合表規則 – Andurit

+0

或者在導入期間添加一個「DEFAULT」表達式。 –

相關問題