0

正如标题所说,我有带有字段 food_id(PK) 和 food_name 的餐桌食品。我已经在表上有这些数据

food_id|food_name
-----------------
0000001|food1
0000002|food2
0000003|food3

在我的 csv 上

0000001|apple
0000004|banana
0000005|grape

如果没有重复的 PK,这是我的查询

 copy foodfrom 'd:\testingfood.csv' delimiter '|' csv

但我想将 food1 更新为 apple to apple 并插入 0000004|banana 和 0000005|grape?

可能吗?

4

1 回答 1

1

您不能在单个COPY命令中执行此操作。使用临时表和INSERTwith ON CONFLICT,例如:

create temp table tmp_food (like food); -- create temporary table like food

copy tmp_food from 'd:\testingfood.csv' delimiter '|' csv;  -- copy to temp table

insert into food (food_id, food_name)   -- insert into food from temp table
select food_id, food_name
from tmp_food
on conflict (food_id) do                -- update instead of error
update set food_name = excluded.food_name;

drop table tmp_food;                    -- drop temp table
于 2017-02-22T01:53:01.273 回答