Hallo FOSSGIS-Liste,

Ich habe ein sehr spezielles Problem, aber vor allem für solche Fälle ist ja diese Liste gedacht...

Ich importiere mit einem geplanten Job Daten über einen GetFeature-Request von einem WFS-Service in eine vorhandene Tabelle in einer PostgreSQL-Datenbank über ogr2ogr. Der (hier anonymisierte) Befehl dafür ist:

ogr2ogr -update -append -f PostgreSQL -nlt POINT -nln tabellenname -doo ACTIVE_SCHEMA=schema --config PG_USE_COPY NO -a_srs EPSG:25832 PG:"host=host port=1234 dbname=db user=user" "WFS:http://wfs.service.de?service=WFS&version=1.0.0&request=GetFeature&typeName=NAME&srsName=EPSG:25832";

Dem Nutzer sind per pg_hba.conf entsprechende Rechte eingeräumt, daher kein Passwort. Der Import in die Tabelle klappt erst einmal ohne Probleme. Auf der Tabelle sitzt eine Trigger-Funktion, welche die Änderungen über dblink in eine andere Tabelle auf einer anderen PostgreSQL-DB spiegelt. Diese sieht wie folgt aus:|

CREATE OR REPLACE FUNCTION schema.triggerfunctionname()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
DECLARE
    str_execute text;
BEGIN
    IF (TG_OP = 'INSERT') THEN
        str_execute := dblink_build_sql_insert('schema.table'::text, '1', 1, ARRAY[NEW.gid]::text[], ARRAY[NEW.gid]::text[]);
    ELSIF (TG_OP = 'UPDATE') THEN
        str_execute := dblink_build_sql_update('schema.table'::text, '1', 1, ARRAY[NEW.gid]::text[], ARRAY[OLD.gid]::text[]);
     ELSIF (TG_OP = 'DELETE') THEN
        str_execute := dblink_build_sql_delete('schema.table'::text, '1', 1, ARRAY[OLD.gid]::text[]);
    END IF;
    PERFORM dblink_exec('map', str_execute);
    RETURN NULL;
END; $function$
;
|
Die Verbindung 'map' wird zuvor über eine andere Funktion geöffnet.

Der Trigger funktioniert eigenständig auch ohne Probleme und ist auf vielen Tabellen in Einsatz. Wenn ich auf der Haupttabelle direkt Änderungen über INSERT, UPDATE oder DELETE fahre, dann landen diese Änderungen auch über dblink auf der richtigen Tabelle schema.tabelle in der zweiten Datenbank. Wenn ich den INSERT nun aber über ogr2ogr laufen lasse, sucht und schreibt der Trigger die Änderungen nicht in die Tabelle in ihrem Schema (obwohl dieses im Trigger definiert ist), sondern nach public.tabelle.

Gibt es da irgendwie einen Unterschied zwischen "selbst gemachten" Änderungen an einer Tabelle und welchen, die über einen anderen Punk (ogr2ogr in diesem Fall) kommen?
Kann mir das nicht so richtig erklären...

Vielen Dank und liebe Grüße

--
Daniel Cebulla
Anwendungsbetreuer GIS

Telefon:  03641 49-5190      E-Mail:[email protected]

Kommunale Immobilien Jena    Eigenbetrieb der Stadt Jena
Am Anger 26, 07743 Jena      Werkleiter: Karl-Hermann Kliewe
https://www.kij.de
--
....................................................................
FOSSGIS Veranstaltungen
https://www.fossgis.de/news/fossgis-events/

FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
GIS-Bereich und Freier Geodaten!
https://www.fossgis.de/             https://twitter.com/FOSSGIS_Verein

____________________________________________________________________
FOSSGIS-Talk-Liste mailing list
[email protected]
https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste

Antwort per Email an