Commit a0ebdb89 authored by Bart Boone's avatar Bart Boone 🤞🏼

closes #5737 - queries en instructies voor verdere aanvullingen stratenlijst

parent 538b2c21
Pipeline #1498 failed with stages
in 1 minute and 5 seconds
USE master
GO
IF EXISTS(SELECT * FROM sys.databases WHERE name='crab')
DROP DATABASE crab
GO
CREATE DATABASE crab
GO
use crab
go
ALTER TABLE dbo.gem ALTER COLUMN ID int not null
ALTER TABLE dbo.gemnm ALTER COLUMN ID int not null
ALTER TABLE dbo.postkan ALTER COLUMN ID int not null
ALTER TABLE dbo.postknm ALTER COLUMN ID int not null
ALTER TABLE dbo.sstrstrn ALTER COLUMN ID int not null
ALTER TABLE dbo.straatnm ALTER COLUMN ID int not null
ALTER TABLE dbo.subkan ALTER COLUMN ID int not null
ALTER TABLE dbo.subkgem ALTER COLUMN ID int not null
ALTER TABLE dbo.substr ALTER COLUMN ID int not null
ALTER TABLE dbo.substrnm ALTER COLUMN ID int not null
GO
ALTER TABLE dbo.gem ADD PRIMARY KEY(ID)
ALTER TABLE dbo.gemnm ADD PRIMARY KEY(ID)
ALTER TABLE dbo.postkan ADD PRIMARY KEY(ID)
ALTER TABLE dbo.postknm ADD PRIMARY KEY(ID)
ALTER TABLE dbo.sstrstrn ADD PRIMARY KEY(ID)
ALTER TABLE dbo.straatnm ADD PRIMARY KEY(ID)
ALTER TABLE dbo.subkan ADD PRIMARY KEY(ID)
ALTER TABLE dbo.subkgem ADD PRIMARY KEY(ID)
ALTER TABLE dbo.substr ADD PRIMARY KEY(ID)
ALTER TABLE dbo.substrnm ADD PRIMARY KEY(ID)
GO
ALTER TABLE dbo.gemnm
ADD CONSTRAINT FK_gemnm_gem FOREIGN KEY (GEMID) REFERENCES dbo.gem(ID)
GO
ALTER TABLE dbo.postknm
ADD CONSTRAINT FK_postknm_postkan FOREIGN KEY (POSTKANID) REFERENCES dbo.postkan(ID)
GO
ALTER TABLE dbo.subkan
ADD CONSTRAINT FK_subkan_postkan FOREIGN KEY (POSTKANID) REFERENCES dbo.postkan(ID)
GO
ALTER TABLE dbo.subkgem
ADD CONSTRAINT FK_sukbgem_subkan FOREIGN KEY (SUBKANID) REFERENCES dbo.subkan(ID)
GO
ALTER TABLE dbo.subkgem
ADD CONSTRAINT FK_subkgem_gem FOREIGN KEY (GEMID) REFERENCES dbo.gem(ID)
GO
ALTER TABLE dbo.straatnm
ADD CONSTRAINT FK_straatnm_gem FOREIGN KEY(GEMID) REFERENCES dbo.gem(ID)
GO
ALTER TABLE dbo.sstrstrn
ADD CONSTRAINT FK_sstrstrn_straatnm FOREIGN KEY (STRAATNMID) REFERENCES dbo.straatnm(ID)
GO
ALTER TABLE dbo.sstrstrn
ADD CONSTRAINT FK_sstrstrn_substr FOREIGN KEY (SUBSTRID) REFERENCES dbo.substr(ID)
GO
ALTER TABLE dbo.substrnm
ADD CONSTRAINT FK_substrnm_substr FOREIGN KEY (SUBSTRID) REFERENCES dbo.substr(ID)
GO
\ No newline at end of file
use crab
go
BEGIN TRY
DROP TABLE dbo.WoonplaatsWerktabel
END TRY
BEGIN CATCH
print 'Tabel dbo.WoonplaatsWerktabel bestond nog niet, dus was verwijderen niet nodig.'
END CATCH
GO
CREATE TABLE dbo.WoonplaatsWerktabel (
ID int identity(1,1),
CrabPostkantonID int,
Postnummer int,
Gemeente varchar(max),
Deelgemeente varchar(max),
Taalcode varchar(2)
)
GO
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
SELECT
pk.ID
,pkancode AS Postnummer
, gemnm AS Gemeente
, REPLACE(REPLACE(postkannm, '»', ''), '«', '') AS Deelgemeente
, gn.Taalcode
FROM
dbo.gem g
inner join dbo.gemnm gn on g.ID = gn.gemid
inner join dbo.subkgem skg on g.id = skg.gemid
inner join dbo.subkan sk on skg.subkanid = sk.id
inner join dbo.postkan pk on sk.postkanid = pk.id
inner join dbo.postknm pkn on pk.id = pkn.postkanid
WHERE
gn.taalcode = pkn.taalcode
GO
DECLARE @input varchar(max)
, @idx int
, @entry varchar(max)
, @maxid int
, @tmp int
, @crabID int
, @postnr int
, @gemeente varchar(max)
, @taalcode varchar(2)
SELECT @maxid = max(ID)
FROM dbo.WoonplaatsWerktabel
WHERE Deelgemeente like '%/%'
WHILE @maxid IS NOT NULL
BEGIN
SELECT
@crabID = CrabPostkantonID
, @postnr = Postnummer
, @input = Deelgemeente
, @gemeente = gemeente
, @taalcode = taalcode
FROM
dbo.WoonplaatsWerktabel
WHERE
ID = @maxid
SET @idx = charindex('/', @input)
WHILE @idx > 0
BEGIN
SET @entry = substring(@input, 0, @idx)
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
VALUES (@crabID, @postnr, @gemeente, rtrim(ltrim(@entry)), @taalcode)
SET @input = substring(@input, @idx + 1, len(@input))
SET @idx = charindex('/', @input)
END
UPDATE dbo.WoonplaatsWerktabel
SET Deelgemeente = @input
WHERE ID = @maxid
SELECT @maxid = max(ID)
FROM dbo.WoonplaatsWerktabel
WHERE Deelgemeente like '%/%'
END
GO
UPDATE dbo.WoonplaatsWerktabel
SET Deelgemeente = rtrim(ltrim(Deelgemeente))
GO
-- namen die we zelf toegevoegd hebben
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
VALUES(938, 8340, 'Damme', 'Sint-Rita', 1)
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
VALUES(938, 8340, 'Damme', 'Vivenkapelle', 1)
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
VALUES(1133, 9940, 'Evergem', 'Wippelgem', 1)
INSERT INTO dbo.WoonplaatsWerktabel(CrabPostkantonID, Postnummer, Gemeente, Deelgemeente, Taalcode)
VALUES(960, 8530, 'Harelbeke', 'Stasegem', 1)
GO
-- gemeenten die we niet toegevoegd hebben, bv. omdat ze volgens Wikipedia een andere postcode hebben
-- en met die andere postcode ook al in de woonplaatsenlijst zitten
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 1348 AND Deelgemeente = 'Mont-Saint-Guibert'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 1380 AND Deelgemeente = 'Waterloo'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 1400 AND Deelgemeente = 'Petit-Roeulx-lez-Nivelles'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 1410 AND Deelgemeente = 'La Hulpe'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 2180 AND Deelgemeente = 'Antwerpen'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 2620 AND Deelgemeente = 'Wilrijk (Antwerpen)'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 2990 AND Deelgemeente = 'Brecht'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 3660 AND Deelgemeente = 'Meeuwen-Gruitrode'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4000 AND Deelgemeente = 'Saint-Nicolas (Lg.)'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4560 AND Deelgemeente = 'Modave'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4671 AND Deelgemeente = 'Cheratte'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4700 AND Deelgemeente = 'Waimes'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4900 AND Deelgemeente = 'Theux'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 5350 AND Deelgemeente = 'Gesves'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 5575 AND Deelgemeente = 'Beauraing'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 6010 AND Deelgemeente = 'Montignies-sur-Sambre'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 6870 AND Deelgemeente = 'Bras'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 6920 AND Deelgemeente = 'Rochefort'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 7180 AND Deelgemeente = 'Ecaussinnes'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 8570 AND Deelgemeente = 'Wortegem-Petegem'
DELETE FROM dbo.WoonplaatsWerktabel WHERE Postnummer = 4750 AND Deelgemeente = 'Butgenbach' AND Taalcode = 'fr'
GO
-- aanpassingen
UPDATE dbo.WoonplaatsWerktabel SET Deelgemeente = 'Ekeren' WHERE Postnummer = 2180 AND Deelgemeente = 'Ekeren (Antwerpen)'
UPDATE dbo.WoonplaatsWerktabel SET Deelgemeente = 'Kermt' WHERE Postnummer = 3510 AND Deelgemeente = 'Kermt (Hasselt)'
UPDATE dbo.WoonplaatsWerktabel SET Deelgemeente = '''s-Gravenvoeren' WHERE Postnummer = 3798 AND Deelgemeente = 's Gravenvoeren'
UPDATE dbo.WoonplaatsWerktabel SET Deelgemeente = 'Beveren-Leie' WHERE Postnummer = 8791 AND Deelgemeente = 'Beveren (Leie)'
UPDATE dbo.WoonplaatsWerktabel SET Deelgemeente = 'Erembodegem' WHERE Postnummer = 9320 AND Deelgemeente = 'Erembodegem (Aalst)'
GO
use crab
go
-- En nu kunnen we nakijken wat er aangepast of toegevoegd is.
-- Als er in het eerste zoekresultaat meerdere rijen zijn waar quotes in voorkomen die op << en >> lijken,
-- moet je in '00 woonplaatsen bijwerken.sql' eens controleren of dat zo in de REPLACE-instructie staat bij de inserts.
-- Niet alle teksteditors kunnen met die quotes overweg, dus misschien moet je dat eens aanpassen en opnieuw uitvoeren.
SELECT *
FROM dbo.WoonplaatsWerktabel wwt
LEFT OUTER JOIN gap_local.adr.WoonPlaats wp on wwt.Postnummer = wp.Postnummer and wwt.Deelgemeente = wp.Naam
WHERE wp.Naam is null
ORDER BY wwt.CrabPostkantonID
GO
SELECT * FROM gap_local.adr.WoonPlaats wp
LEFT OUTER JOIN dbo.WoonplaatsWerktabel wwt on wwt.Postnummer = wp.Postnummer and wwt.Deelgemeente = wp.Naam
WHERE wwt.Deelgemeente is null
ORDER BY wwt.CrabPostKantonID
GO
use crab
go
BEGIN TRY
DROP TABLE dbo.StraatnaamWerktabel
END TRY
BEGIN CATCH
print 'Tabel dbo.StraatnaamWerktabel bestond nog niet, dus was verwijderen niet nodig.'
END CATCH
GO
CREATE TABLE dbo.StraatnaamWerktabel (
ID int identity(1,1),
CrabSubstraatID int,
Postnummer int,
SubStraatnaam varchar(80),
CleaneSubstraatnaam varchar(80),
Taalcode varchar(2)
)
GO
INSERT INTO dbo.StraatnaamWerktabel(CrabSubstraatID, Postnummer, SubStraatnaam, CleaneSubStraatnaam, TaalCode)
SELECT DISTINCT
s.ID AS CrabSubStrID
, pkancode
, substrnm
, straatnm0
, ss.Taalcode
FROM
straatnm sn
inner join sstrstrn ssn on sn.id = ssn.straatnmid
inner join substr s on ssn.substrid = s.id
inner join substrnm ss on s.id = ss.substrid
inner join gem g on sn.gemid = g.id
inner join gemnm gn on g.id = gn.gemid
inner join subkgem skg on g.id = skg.gemid
inner join subkan sk on skg.subkanid = sk.id
inner join postkan pk on pk.id = sk.postkanid
inner join postknm pkn on pk.id = pkn.postkanid
WHERE
pkn.TAALCODE = g.TAALCODE
and s.subkanid = sk.id
GO
This diff is collapsed.
use crab
go
-- En nu kunnen we nakijken wat er aangepast of toegevoegd is.
-- aanvullingen sinds eerste inserts
SELECT * FROM dbo.straatnaamwerktabel WHERE crabsubstraatid > 153602
-- aanvullingen sinds laatste inserts (2018)
SELECT * FROM dbo.straatnaamwerktabel WHERE crabsubstraatid > 190969
-- Als er in het eerste zoekresultaat hieronder meerdere rijen zijn waar quotes in voorkomen die op << en >> lijken,
-- moet je in '00 woonplaatsen bijwerken.sql' eens controleren of dat zo in de REPLACE-instructie staat bij de inserts.
-- Niet alle teksteditors kunnen met die quotes overweg, dus misschien moet je dat eens aanpassen en opnieuw uitvoeren.
SELECT *
FROM dbo.StraatnaamWerktabel snwt
LEFT OUTER JOIN gap_local.adr.StraatNaam sn on snwt.Postnummer = sn.Postnummer and (snwt.SubStraatnaam = sn.Naam or snwt.CleaneSubstraatnaam = sn.Naam)
WHERE sn.Naam is null
ORDER BY sn.CrabSubstraatID
GO
-- manuele toevoegingen aan de stratenlijst (die eventueel nog gematcht moeten worden)
-- OPM: die moet je nog uit de live-database ophalen!
SELECT * FROM gap_local.adr.StraatNaam sn
LEFT OUTER JOIN dbo.StraatnaamWerktabel snwt on snwt.Postnummer = sn.Postnummer and (snwt.SubStraatnaam = sn.Naam or snwt.CleaneSubstraatnaam = sn.Naam)
WHERE snwt.CleaneSubstraatnaam IS NULL
AND sn.CrabSubstraatID IS NULL
ORDER BY snwt.CrabSubstraatID
GO
-- straatnamen die uit CRAB komen maar waar cleanup aan gebeurd is,
-- bv. door afkortingen voluit te schrijven of toevoegingen tussen haakjes te verwijderen
SELECT * FROM gap_local.adr.StraatNaam sn
LEFT OUTER JOIN dbo.StraatnaamWerktabel snwt on snwt.Postnummer = sn.Postnummer and (snwt.SubStraatnaam = sn.Naam or snwt.CleaneSubstraatnaam = sn.Naam)
WHERE snwt.CleaneSubstraatnaam IS NULL
AND sn.CrabSubstraatID IS NOT NULL
ORDER BY snwt.CrabSubstraatID
GO
--ALTER TABLE [adr].[BelgischAdres] DROP CONSTRAINT [FK_BelgischAdres_StraatNaam]
--GO
--ALTER TABLE [adr].[BelgischAdres] DROP CONSTRAINT [FK_BelgischAdres_Adres]
--GO
--ALTER TABLE [adr].[BelgischAdres] DROP CONSTRAINT [FK_BelgischAdres_WoonPlaats]
--GO
--delete from gap_local.adr.straatnaam where crabsubstraatid is null
--GO
--ALTER TABLE [adr].[BelgischAdres] WITH CHECK ADD CONSTRAINT [FK_BelgischAdres_StraatNaam] FOREIGN KEY([StraatNaamID])
--REFERENCES [adr].[StraatNaam] ([StraatNaamID])
--GO
--ALTER TABLE [adr].[BelgischAdres] CHECK CONSTRAINT [FK_BelgischAdres_StraatNaam]
--GO
--ALTER TABLE [adr].[BelgischAdres] WITH CHECK ADD CONSTRAINT [FK_BelgischAdres_Adres] FOREIGN KEY([BelgischAdresID])
--REFERENCES [adr].[Adres] ([AdresID])
--GO
--ALTER TABLE [adr].[BelgischAdres] CHECK CONSTRAINT [FK_BelgischAdres_Adres]
--GO
--ALTER TABLE [adr].[BelgischAdres] WITH CHECK ADD CONSTRAINT [FK_BelgischAdres_WoonPlaats] FOREIGN KEY([WoonPlaatsID])
--REFERENCES [adr].[WoonPlaats] ([WoonPlaatsID])
--GO
--ALTER TABLE [adr].[BelgischAdres] CHECK CONSTRAINT [FK_BelgischAdres_WoonPlaats]
--GO
Je kunt de CRAB-database gratis downloaden op https://download.vlaanderen.be/Producten/Detail?id=72&title=CRAB_stratenlijst.
Exporteer de tabellen uit het Access-bestand naar een SQL Server-database. Voer daarna de scripts in dit mapje uit, in de juiste volgorde (zie volgnummer in de bestandsnaam). De scripts voeren een aantal opruimbewerkingen uit, en zorgen er zo voor dat je de gegevens in die tabellen kunt vergelijken met de woonplaatsen- en stratenlijst uit je lokale GAP-database. Als die niet 'gap_local' heet, moet je dat nog aanpassen in de controlescripts voor je ze runt.
- 00 create-db.sql
- Open het Access-bestand en exporteer de tabellen naar de lokale database 'crab'.
- Voer nu de overige scripts uit, volgens nummering.
Je zal onder andere heel wat straatnamen moeten verbeteren. Zo wordt 'Sint' soms afgekort, soms staat er een koppelteken achter en soms een spatie of enkel een punt, enz.
Als je helemaal klaar bent, kun je de rijen ophalen uit de werktabellen die nog niet in de dev-database zitten. Op basis van dat resultaat kan je dan de nieuwe insert-queries genereren.
\ No newline at end of file
Voer achtereenvolgens uit: Voer achtereenvolgens uit:
* gap-testdata.sql * 01 create-db.sql
* gap-straten.sql * 02 gap-testdata.sql
* gap-straten aanvulling vanuit CRAB 2018.sql * 03 gap-straten.sql
* gap-procedures.sql * 04 gap-straten aanvulling vanuit CRAB 2018.sql
* 05 gap-procedures.sql
Dan zouden we al ergens moeten komen :-) Dan zouden we al ergens moeten komen :-)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment