将多个表合并到PostGIS中的新表中


13

我希望将一些单独的表合并到PostGIS中的新表中。使用Shapefile数据时,这是一项容易的任务,但是我不确定如何在PostGIS中执行此操作。任何帮助将不胜感激。我想我使用Append,但是我不确定从哪里开始。

Answers:


17

(飞行前检查:所有原始表中的属性是否相同?所有表中的几何类型是否完全相同?)

你可以

  1. 首先创建(空)表,然后使用INSERT INTO ... SELECT ... FROM将来自每个原始表的所有数据放入合并的表中。
  2. 从一个大的UNION语句创建新表。

对于1,它可能会去:

CREATE TABLE merged (id serial primary key, attrib1 integer, attrib2 varchar(15),....);
SELECT AddGeometryColumn('merged','geom',<SRID>,'<FEATURE_TYPE>,'XY');
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_1;
INSERT INTO merged (attrib1, attrib2, ...., geom) SELECT attribA, attribB,...,geom FROM table_2;

等等...

对于选项2:

CREATE TABLE merged AS( 
SELECT attribA, attribB,...,geom FROM table_1
UNION 
SELECT attribA, attribB,...,geom FROM table_2
UNION
.... 
);
SELECT Populate_Geometry_Columns('merged'::regclass);

HTH,Micha


谢谢Micha,我会尝试的。是的,所有表都具有相同的属性,并且它们是相同的几何类型。再次感谢...
Ryan Garnett 2012年

我已经尝试过,但遇到与XY相关的错误。我知道自己输入了错误的内容,因为我不确定应该在此处使用什么。这是我的查询和输出响应。任何帮助都会很棒。
瑞安·加内特

创建表pbear_pp(id串行主键,实体名varchar(40)); SELECT AddGeometryColumn('pbear_pp','geom','-1','polygon','XY'); INSERT INTO pbear_pp(entityname,geom)SELECT实体名称,geom FROM nts250k.nts250k_​​043e_poly; INSERT INTO pbear_pp(entityname,geom)选择实体名称,geom FROM nts250k.nts250k_​​043f_poly; ETC ETC ...
Ryan Garnett 2012年

注意:CREATE TABLE将为串行列“ pbear_pp.id”创建隐式序列“ pbear_pp_id_seq”注意:CREATE TABLE / PRIMARY KEY将为表“ pbear_pp”创建隐式索引“ pbear_pp_pkey”错误:整数的无效输入语法:“ XY”
瑞恩·加内特(Ryan Garnett)2012年

1
使用2代替“ XY”,因为该参数指定尺寸。
lynxlynxlynx 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.