我想知道是否可以在表上使用触发器来“忽略”STDIN中的COPY语句中的列,但这些列不在目标表中。如果问题的措辞/语法不正确,我很抱歉,但这是对我想要说的内容的解释。我是触发器的新手,所以任何建议都是有帮助的。
我正在使用PostGIS Shapefile导入程序将Shapefile复制到我的PostgreSQL数据库中的空间表中。
这将创建一个COPY语句,其中包含shapefile中的所有字段,如下所示:
COPY "public"."stations" ("column1","column2","column3","column4", geom) FROM stdin;
column1和column2在文件中,但不在目标表中,因此复制失败。
有没有一种方法可以创建触发器来创建与以下内容具有相同结果的东西:
COPY "public"."stations" ("column3","column4", geom) FROM stdin;
发布于 2012-06-14 02:36:09
不能,您不能跳过输入文件中存在的列。甚至在触发器被调用之前,这就会出错。而且你也不能使用规则。I quote the manual
COPY FROM将调用目标表上的任何触发器和检查约束。但是,它不会调用规则。
您可以编辑该文件,也可以使用临时临时表
COPY
指向具有匹配列的临时表。INSERT
将所需的列写入最终目标表,或将整个范围的SQL命令写入更复杂的内容。https://stackoverflow.com/questions/11024925
复制相似问题