Połącz wiele tabel w nową tabelę w PostGIS

13

Chcę połączyć kilka pojedynczych tabel w nową tabelę w PostGIS. Jest to łatwe zadanie podczas pracy z danymi Shapefile, ale nie jestem pewien, jak to zrobić w PostGIS. Każda pomoc byłaby bardzo mile widziana. Myślę, że używam Append, ale nie jestem pewien, od czego zacząć.

Ryan Garnett
źródło

Odpowiedzi:

17

(Kontrola przed lotem: czy atrybuty są identyczne we wszystkich oryginalnych tabelach? Czy typ geometrii jest dokładnie taki sam we wszystkich tabelach?)

Możesz albo

  1. najpierw stwórz (pustą) tabelę, a następnie użyj INSERT INTO ... SELECT ... FROM, aby przenieść wszystkie dane z każdej oryginalnej tabeli do scalonej.
  2. Utwórz nową tabelę na podstawie jednej dużej instrukcji UNION.

Dla 1 może pójść:

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;

i tak dalej...

Dla opcji 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
źródło
Dziękuję Micha, spróbuję tego. Tak, wszystkie tabele mają ten sam atrybut i są tego samego typu geometrii. Jeszcze raz dziękuję ...
Ryan Garnett,
Próbowałem i pojawia się błąd związany z XY. Wiem, że wkładam niewłaściwą rzecz, ponieważ nie jestem pewien, co powinienem tam wykorzystać. Oto moje zapytanie i odpowiedź wyjściowa. Każda pomoc byłaby świetna.
Ryan Garnett,
CREATE TABLE pbear_pp (id seryjny klucz podstawowy, nazwa jednostki varchar (40)); SELECT AddGeometryColumn („pbear_pp”, „geom”, „- 1”, „wielokąt”, „XY”); INSERT INTO pbear_pp (nazwa jednostki, geom) WYBIERZ nazwę jednostki, geom OD nts250k.nts250k_043e_poly; INSERT INTO pbear_pp (nazwa jednostki, geom) WYBIERZ nazwę jednostki, geom OD nts250k.nts250k_043f_poly; ETC ETC ...
Ryan Garnett,
UWAGA: UTWÓRZ TABELĘ utworzy niejawną sekwencję „pbear_pp_id_seq” dla kolumny szeregowej „pbear_pp.id” UWAGA: UTWÓRZ TABELĘ / KLUCZ PODSTAWOWY utworzy niejawny indeks „pbear_pp_pkey” dla tabeli „pbear_pp” BŁĄD: niepoprawna składnia wejściowa dla liczby całkowitej: „XY”
Ryan Garnett,
1
użyj 2 zamiast „XY”, ponieważ ten argument określa wymiary.
lynxlynxlynx