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)在删除时不执行任何操作代码>是的,表约束有很多选项,在不了解表结构的情况下,我无法选择正确的语法