Postgresql 从CSV更新/插入到表

Postgresql 从CSV更新/插入到表,postgresql,Postgresql,例如,我需要将mytbl导出为csv CREATE TABLE public.mytbl ( id integer, product character varying(20), patent character varying(50) ) WITH ( OIDS = FALSE ) ; copy(select * from mytbl) to 'D:\mytbl.csv' with csv header 我使用以下查询将mytbl导出到csv

例如,我需要将
mytbl
导出为
csv

    CREATE TABLE public.mytbl
(
   id integer, 
   product character varying(20), 
   patent character varying(50)
) 
WITH (
  OIDS = FALSE
)
;
copy(select * from mytbl) to 'D:\mytbl.csv' with csv header 
我使用以下查询将
mytbl
导出到
csv

    CREATE TABLE public.mytbl
(
   id integer, 
   product character varying(20), 
   patent character varying(50)
) 
WITH (
  OIDS = FALSE
)
;
copy(select * from mytbl) to 'D:\mytbl.csv' with csv header 
并使用
COPY mytbl FROM'D:\mytbl.csv“csv头文件
这将从
csv

但是在从
mytbl.csv
导入之前,我需要删除
mytbl
中的现有数据, 当我删除获取错误时

ERROR:  update or delete on table "mytbl" violates foreign key constraint "mytblX_forinkey_productid" on table "mytblX"
如何克服这个问题


PostgreSQL 9.2

上,您的mytblX似乎有一个FK到mytbl。在删除mytbl之前,您应该
更改表mytblX drop CONSTRAINT mytblX\u forinkey\u productid
。然后,您可以将数据复制回并发出
altertablemytblx添加您的_TABLE_约束


请注意,FK约束基于索引,因此在重新创建FK约束之前,应在新复制的数据上创建适当的索引。还请注意,新数据可能不符合mytblX数据设置的要求;i、 e.如果引用的productid不在您复制到数据库的数据中,则您将遇到需要首先解决的问题(通常是手动解决且繁琐)。

您可以将约束设置为可延迟,然后将其延迟。这将允许您删除原始表的内容,并在单个事务中从文件中重新加载它。但如果文件不包含满足约束所需的所有行,然后,您将在提交时收到一个错误,您的意思是目标数据库不是Postgresql?@Clodoaldo Neto两者都是Postgresql
ALTER TABLE mytblX添加您的_TABLE_约束
显示错误
错误:输入端的语法错误
我认为这一个是正确的
ALTER TABLE mytblX ADD约束mytblX\u forinkey\u productid外键(productid)在更新时引用mytblX(productid)在删除时不执行任何操作是的,表约束有很多选项,在不了解表结构的情况下,我无法选择正确的语法