PSQL er et klient prgram til PostgreSQL, som kan afvikles fra kommandolinjen og er derved oplagt til at afvikle sql scripts
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
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;