Rob*_*ert 8 postgresql import overwrite duplicates psql
我正在将一些行导入我的postgres数据库,如下所示:
psql -U postgres import_test < 1432798324_data
Run Code Online (Sandbox Code Playgroud)
凡我import_test为我的数据库和1432798324_data文件只是纯文本格式如下:
COPY cars FROM stdin;
<row data>
<row data>
...
\.
COPY drivers FROM stdin;
<row data>
<row data>
...
\.
Run Code Online (Sandbox Code Playgroud)
(我从这里的答案中得到了这个纯文本文件的格式).
当我导入空白数据库时,此方法正常工作.但是,如果数据库不是空白,并且在导入期间找到任何重复的行,则会出现错误:
ERROR: duplicate key value violates unique constraint "car_pkey"
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以修改我的导入命令强制覆盖,如果发现重复?换句话说,如果我导入一行并且已经有一行带有该ID,我希望我的新行覆盖它.
您可以导入到临时表中。然后,您可以在复制新数据之前删除已经存在的行:
create temporary table import_drivers as select * from drivers limit 0;
copy import_drivers from stdin;
begin transaction;
delete from drivers
where id in
(
select id
from import_drivers
);
insert into drivers
select *
from import_drivers;
commit transaction;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3572 次 |
| 最近记录: |