我正在将一些行导入我的postgres数据库,如下所示:
psql -U postgres import_test < 1432798324_data
我的import_test是我的数据库,1432798324_data文件只是纯文本格式,如:
copY cars FROM stdin; <row data> <row data> ... \. copY drivers FROM stdin; <row data> <row data> ... \.
当我导入空白数据库时,此方法正常工作.但是,如果数据库不是空白,并且在导入期间找到任何重复的行,则会出现错误:
ERROR: duplicate key value violates unique constraint "car_pkey"
有没有办法我可以修改我的导入命令强制覆盖,如果发现重复?换句话说,如果我导入一行并且已经有一行带有该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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。