PG WORKSHOP

PSQL

PSQL er et klient prgram til PostgreSQL, som kan afvikles fra kommandolinjen og er derved oplagt til at afvikle sql scripts

Tomme boliger

Nedenfor vises et eksempel på en "portering" af Haderslevs eksisterende et ArcGIS modelbuilder script til "Tomme boliger" til SQL

Nedenstående indsæsttes i en fil:tommeboliger.sql

BEGIN;
DROP TABLE IF EXISTS emdb.tommeboliger;
CREATE TABLE emdb.tommeboliger AS
SELECT
  st_setsrid(st_makepoint(ap.kooroest, ap.koornord), 25832),
  anvend.tekst AS anvendelse,
  ejer.tekst AS ejerforhold,
  COUNT(1) -- Hvor mange forekomster (ikke nødvendigs bygninger) pr adressepunkt.
--  ,  *
FROM
  emdb.jr49003v tb JOIN -- Brutto tomme boliger
  emdb.jy72000v a ON (tb.kommunenummer=a.kommunenummer AND tb.vej_kode=a.vejkode AND tb.hus_nummer= a.hus_nr) LEFT JOIN -- Adresse.
  emdb.jy73200v ap ON (a.adg_id = ap.apu_id) LEFT JOIN -- Punkter findes ikke for alle adresser, derfor LEFT JOIN.
  emdb.jy70100v b ON (b.adg_id = a.adg_id) LEFT JOIN -- Alle bygninger på adressen.
  emdb.jy71000v ej ON (b.kommunenummer=ej.kommunenummer AND b.ejendomsnr=ej.ejendomsnr) LEFT JOIN -- Ejerforhold på den ejemdom som bygningen tilhører.
  emdb.ql52500v anvend ON (b.byg_anvkode=CAST(COALESCE(NULLIF(anvend.kode,''), '0') AS integer)) LEFT JOIN -- Find teksten. Datatyper forskellige. Blank omsættes til 0.
  emdb.ql23600v ejer ON (CAST(ej.ejerforhold_kode AS integer) = ejer.kode) -- Find teksten på ejerforhold
GROUP BY
  ap.kooroest, ap.koornord, anvend.tekst, ejer.tekst; -- Aggregering på punkt,tekster.
COMMIT;

Ovenstående script bør revideres afhængig af formålet. Scriptet bør muligvis tage udgangspunkt i fk_enh_id (Tom boligenhed -> opgang -> bygning-> grund-> esr ejendomsnummer=én grund pr tom boligenhed - dvs garager m.m. er udeladt). Scriptet tager udgangspunkt i at en adresse kan være tom, hvilket er en smule misvisende.

SQL scriptet kan køres som et script med PSQL på følgende måde:

CALL setenv_k510_test.bat

%PSQL% -f sql/tommeboliger.sql

IF ERRORLEVEL 1 goto error

REM IF we get here everything was ok
goto end


:error
echo der er sket en fejl
%PSQL% -c "COMMENT ON TABLE emdb.tommeboliger IS 'Oprettelse af tabel fejet den  %date% kl %time%';"
exit 1

:end
echo alt gik fint den %date% kl %time%
%PSQL% -c "COMMENT ON TABLE emdb.tommeboliger IS 'Tabel dannet den %date% kl %time%';"

exit 0

Bemærk, hvordan succes og fejl håndteres. Åben PGAdmin og se, hvad der står anført som kommentar på tabellen

konvertér jordstykke-polygoner til jordstykke-linier

På samme måde kan man oprette tabeller med PSQL f.eks. efter der er kommet nye jordstykker i databasen.

BEGIN;
DROP TABLE IF EXISTS matrikel.ny_skellinje;
CREATE TABLE matrikel.ny_skellinje AS

SELECT ogc_fid, st_boundary(wkb_geometry) as skellinje FROM matrikel.jordstykke;
COMMIT;