Home / SQL Server / Nederlandse postcodetabel + SQL Script voor import
Nederlandse postcodetabel

Nederlandse postcodetabel + SQL Script voor import

Een postcodetabel bevat informatie over postcodes. Dit is erg handig als je meer informatie wilt over een bepaalde postcode zoals een geografische locatie of de plaats die bij een postcode hoort.

Iedere postcode in combinatie met de minimale en maximale huisnummer-range heeft een eigen rij in de tabel. Het handigste van deze tabel zijn de X-Y coordinaten, ook wel latitude/longitude genoemd. Ik heb met behulp van een SQL Functie direct de GeoLocation berekend zoals je in onderstaand SQL statement kunt zien.

De gratis postcodetabel tabel bevat in totaal 471.993 rijen dus het is een flink grote tabel. Met bijgevoegd SQL Script kun je in een keer alle data importeren. Onderaan deze post vind je drie download links, het script, een excel file en een postgre database.

 

Als je een beetje handig met SQL bent weet je natuurlijk wel hoe je met deze data om moet gaan. Ik zal binnenkort een artikel publiceren hoe je vanuit een tabel met een postcode/huisnummer de geografische gegevens kunt tonen, bijvoorbeeld in Excel Maps of Power BI.

Nederlandse postcodetabel animatie

Postcodetabel aanmaken

Onderstaande SQL voer je uit om de postcodetabel aan te maken. Vervolgens voer je het script in SQL server uit om de tabel te vullen met postcodes.

CREATE TABLE [dbo].[REF_Postcode_NL](
[id] [FLOAT] NULL,
[postcode] [nvarchar](255) NULL,
[postcode_id] [FLOAT] NULL,
[pnum] [FLOAT] NULL,
[pchar] [nvarchar](255) NULL,
[minnumber] [FLOAT] NULL,
[maxnumber] [FLOAT] NULL,
[numbertype] [nvarchar](255) NULL,
[street] [nvarchar](255) NULL,
[city] [nvarchar](255) NULL,
[city_id] [FLOAT] NULL,
[municipality] [nvarchar](255) NULL,
[municipality_id] [FLOAT] NULL,
[province] [nvarchar](255) NULL,
[province_code] [nvarchar](255) NULL,
[lat] [FLOAT] NULL,
[lon] [FLOAT] NULL,
[rd_x] [FLOAT] NULL,
[rd_y] [FLOAT] NULL,
[location_detail] [nvarchar](255) NULL,
[changed_date] [datetime] NULL,
[geographypoint] AS ([geography]::STGeomFromText(((('POINT('+CONVERT([VARCHAR](20),[lon],(0)))+' ')+CONVERT([VARCHAR](20),[lat],(0)))+')',(4326)))
) ON [PRIMARY]

DOWNLOADEN POSTCODETABEL



About Ronald Kraijesteijn

Microsoft SQL Server and Business Intelligence consultant, MCITP Certified. If you need a BI specialist for a freelance job, please contact me!

Check Also

Dynamic Refresh SSRS Cache Using SQL

How to Refresh Reporting Services Cache?

I am working for a client which uses a Datawarehouse in which the data is …

29 comments

  1. Wat is je bron. Mogen we updates verwachten. Dit is verweg de meest bruikbare tabel die ik gevonden heb.
    Ga hem zeker proberen.

  2. hi Ronald, je code geeft bij mij de nodige fouten – (punctuation error)

  3. deze melding; bekend?

    #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘AS (geography::STGeomFromText((((‘POINT(‘+CONVERT(VARCHAR(20),lon,(0)))+’ ‘)+CON’ at line 23

  4. ah.. dat verklaart een hoop. je hebt zeker geen mysql versie liggen;)?

  5. Plaatsnamen zijn vernacheld, kijk bijv. maar eens naar ‘1e Ex’.Half Friesland gebruikt ook stomme tekens in hun plaatsnamen en zijn ook allemaal incorrecte encoding weggeschreven. Gelukkig is het eenvoudig genoeg met een search & replace te repareren, want consistent.

  6. Ik zoek eigenlijk gewoon een mogelijkheid om een grote tabel met postcodes gekoppeld aan huisnummer (ranges) en plaatsnaam. In het formaat van:

    postcode | huisnummer (range) | plaatsnaam

    voorbeeld (fictief):

    3200AB | 1 – 100 | Rotterdam

    Deze tabel zou ik het liefst in Excel in kunnen lezen (dus CSV formaat of xlsx).
    Is er iemand die mij kan vertellen hoe dit te doen?

  7. Je bent geweldig! Hier heb ik wat aan! Eens kijken of dit ook fijn kan samenwerken met open street maps of google maps 😉

  8. Mooie tabel, maar ik krijg het script niet gedraaid in visual studio of SSMS, in beide gevallen krijg ik een melding over Memory en execute geeft ´query completed with errors´ zonder verder bericht.

    Iemand tips hoe ik dit moet doen?

  9. Beste allemaal.
    Ik heb de excel gedownload
    deze vervolgens als csv bestand opgeslagen
    in foxpro met import de import wizard gebruikt en nu is het een postcode.dbf .

  10. Top, vriendelijk bedankt! Precies wat ik zocht, ook met lengte- en breedtegraad.

    Exporteren naar CSV is in de meeste gevallen de beste optie. Mysql en Postgres kunnen CSV’s importeren.

    Hup & hop 🙂

  11. Ronald Wijburg

    Ik kom er nog even op terug:
    Die jongens van NL Extact: http://www.nlextract.nl/file-cabinet geven elke maand gratis een csv met alle panden in Nederland. Waar ik naar op zoek ben is hulp hoe verder te komen met hun SQL code (ook gratis) om de BAG gegevens te ontsleutelen. Ik zou graag meer gegevens uit de BAG willen halen, maar geen GEO gegevens. Daar doe ik niets mee. BAG gegevens zijn elke maand gratis te downloaden bij PDOK. ze heten daar inspireadressen. Dat is een enorme verzameling XML files waar werkelijk alles in staat. . Heel moeilijk om te ontsluiten ook in Postgre. Iemand ideeen?

  12. Hi Ronald,

    Ten eerste ongelooflijk bedankt voor deze dataset. Heel erg leuk en interessant.
    Ik liep alleen tegen een klein foutje aan. Er zitten bepaalde Latitude Longitude coordinaten verkeerd in.
    Voorbeeld: er zijn meerdere nederlandse plaatsen met een lat =< 49. Echter is het zuidelijkste puntje van Nederland boven de 50 lat. Is er een manier dit op te lossen? Of zal ik handmatig alles langs moeten gaan?

    Alvast bedankt!

    Renier

    • Ik ben inmiddels zover dat ik uit de BAG (Postgre database, backup laden van NL Extract) een lijst heb gehaald met de door ons gewenste attributen. Ik zal volgende week even nakijken of ik dat probleem ook heb. Als je uit gasat van hun csv file, dan kom je ook dubbele records tegen. Ik heb in mijn csv alleen bestaande actuele adressen. Ik zoek nog wel informatie hoe ik de xml files kan inlezen in Postgre of een andere database. Iemand een idee??

    • Beste Renier,

      Heb je de door NLExtract gemaakt csv gebruikt?
      Je kunt beter de weg volgen die NLExtract voorschrijft, nl via Postgre een backup inladen en dan met behulp van de query van Marcel de Groot een csv file maken.
      Ik kan wel een goede csv sturen die ik gemaakt heb en waar het probleem niet in zit, maar dan moet ik iets van een emailadres hebben en wetransfer gebruiken of hier een upload mogelijkheid hebben. Dan krijg je een file met 9,1 mio adressen.

    • Jillis Eikelenboom

      Dezelfde fout constateerde ik ook, nadat ik de excel eerst als csv in PostgreSQL had ingelezen en daarna in QGIS had gevisualiseerd. Ook liggen er een aantal postcodes in Vlaanderen en in het IJsselmeer.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *