SQLite biedt een laagdrempelige manier om met de geotoko BAG Adressen CSV producten te werken. SQLite is een file-gebaseerde database. Zie hier een SQLite tutorial [1]. Op veel systemen is SQLite standaard beschikbaar, maar anders is het eenvoudig te installeren. We geven hier een voorbeeld met een geotoko Adressen Basis CSV proefbestand, maar hetzelfde stramien kan gevolgd worden voor de overige BAG Adressen CSV producten zoals "Adressen CSV Woning". CSV is een text-gebaseerd formaat waarbij iedere regel een 'record' is waarbij velden/kolommen gescheiden zijn door een 'separator', in geotoko de 'puntkomma' (semicolon). NB in plaats van SQLite (of ander database formaat) kunt u ook Miller gebruiken zie ons Miller-kennisartikel.

We gaan eerst het CSV-bestand importeren zodat deze als een SQLite tabel beschikbaar is. Vervolgens een aantal voorbeelden hoe met simpele "queries" selecties gemaakt en geëxporteerd kunnen worden. We gebruiken in dit voorbeeld bestanden uit de GeoCatalogus. U kunt deze stappen vervolgens ook doen met uw aangekochte en gedownloade Adressen CSV bestanden.

SQLite Installatie


Dit is afhankelijk van uw systeem (Windows, Mac, Linux) en staat in de SQLite tutorial [1] beschreven. Het is de bedoeling om de command-line programma 'sqlite3' beschikbaar te maken in een Terminal (Mac OSX, Linux) of Powershell (Windows). Er bestaan ook visuele SQLite tools, maar command-line werkt het snelst en direct.


Adressen CSV proefbestand downloaden

U kunt een adressen proefbestand downloaden uit de geotoko GeoCatalogus: [2]. Hier hernoemen we het lokale bestand "adres.csv". Dit bestand gaan we vervolgens in SQLIte inlezen.

Database definitie downloaden

U kunt een adressen SQLite definitie (schema) downloaden uit de geotoko GeoCatalogus: [3]. Hoewel het optioneel is om de database aan te maken met dit schema, is het ten zeerste aan te raden om "getypeerd" te kunnen werken dus met kolom definities zoals INTEGER, REAL en TEXT. Als dit achterwege wordt gelaten zullen alle kolommen bij import het type TEXT krijgen.


Adressen CSV inlezen in SQLite 


Met deze sqlite3 commando-regels in een Windows Powershell of Bash lezen we de CSV in. Denk vooral aan alle quotes/accent-tekens! Allereerst maken we de database aan, met juiste kolom-definities die we zojuist hebben gedownload:


sqlite3 adres.db < bag-adressen-basis-sqlite-definitie.sql
Nu is de database met een enkele tabel 'adres' in het bestand 'adres.db' aangemaakt. Vervolgens gaan we het CSV bestand importeren. Let op: dit kan wel iets van 10-15 minuten duren op het volledige NL bestand (plm 10 miljoen adressen).

sqlite3 adres.db ".mode csv" ".separator ';'" ".import adres.csv adres"


De adressen staan nu in het (binaire) adres.db SQLite bestand. Hierin kunt u allerlei selecties maken en deze bijvoorbeeld weer in een CSV opslaan en in bijvoorbeeld een spreadsheet (Excel, Numbers, LibreCalc) inlezen, mits bestanden niet te groot. 


Adressen-selectie uitfilteren in CSV


Hier een voorbeeld. Stel we willen alle adressen van de Gemeente Terneuzen. Met deze sqlite3 commando regel in een Windows Powershell of Bash selecteren we deze en schrijven we het resultaat weer in een CSV (terneuzen.csv). Let op: dit is een enkele regel!


sqlite3 -header adres.db ".mode csv" ".mode list" ".separator ';'" "SELECT * FROM adres WHERE gemeente = 'Terneuzen';" > terneuzen.csv

Deze CSV met twee adressen, is dan in Excel te importeren. Er zijn uiteraard veel meer selecties mogelijk. Bijvoorbeeld zelfs ruimtelijk op basis x,y RD coordinaten, hoewel hiervoor een echte ruimtelijke database zoals PostGIS of GeoPackage (ook op basis SQLite) geschikter voor is. 
Let op: dit is een enkele regel!



sqlite3 -header adres.db ".mode csv" ".mode list" ".separator ';'" "SELECT * FROM adres WHERE x > 100000 AND x < 150000 AND y > 480000 AND y < 495000" > ruimtelijk.csv



Links zoals boven vermeld:


[1] https://www.sqlitetutorial.net/
[2] https://geocatalogus.nl/dataset/c2ee98e0-d4e8-42dd-9432-1d4b4966f9bc/resource/ecbe6732-5a6b-4858-84db-b03c410ff7aa/download/bag-adressen-basis-voorbeeld.csv

[3] https://geocatalogus.nl/dataset/c2ee98e0-d4e8-42dd-9432-1d4b4966f9bc/resource/6e10ac2f-cbef-4528-af33-5fb0bc687c10/download/bag-adressen-basis-sqlite-definitie.sql