CSV-naar-SQL-converter

CSV-gegevens in een database krijgen betekent meestal dat je een loadertool moet starten of COPY/LOAD DATA INFILE-commando’s moet schrijven die alleen met lokale bestanden werken. Voor kleine datasets – tientallen, honderden of enkele duizenden rijen – zijn gewone INSERT-opdrachten die je in elke SQL-console kunt plakken vaak sneller. Deze tool neemt je CSV en een tabelnaam en produceert één INSERT per rij, met identifiers tussen backticks en waarden tussen enkele aanhalingstekens die veilig uit te voeren zijn.

Hoe de SQL wordt samengesteld

  1. 1

    Plak de CSV

    Standaard-CSV met een optionele kopregel. De parser verwerkt cellen tussen aanhalingstekens met ingebedde scheidingstekens.

  2. 2

    Stel de tabelnaam in

    Niet-alfanumerieke tekens in de tabelnaam worden vervangen door underscores; is het veld leeg, dan wordt `my_table` gebruikt.

  3. 3

    Kolommen komen uit de kopregel

    Als de kopregelmodus aanstaat, wordt rij 1 de kolommenlijst. Anders krijgen de kolommen de namen `column_1`, `column_2`, enzovoort.

  4. 4

    Eén INSERT per gegevensrij

    Elke rij wordt `INSERT INTO table (cols) VALUES (...)`. Waarden staan tussen enkele aanhalingstekens en enkele aanhalingstekens binnenin worden verdubbeld.

Dialect, aanhalingstekens en wanneer je beter iets anders kunt gebruiken

De generator richt zich op SQL in MySQL-stijl met backticks rond identifiers en enkele aanhalingstekens rond waarden. De meeste databases accepteren dit met kleine aanpassingen.

Dialect-overzicht

Database Identifiers omsluiten met Opmerkingen
MySQL backticks Werkt ongewijzigd.
MariaDB backticks Werkt ongewijzigd.
PostgreSQL dubbele aanhalingstekens Vervang ` door " vóór het uitvoeren.
SQLite dubbele aanhalingstekens Vervang ` door " of laat de aanhalingstekens rond identifiers weg.
SQL Server vierkante haken Vervang ` door []; let op N'...' voor Unicode.

Hoe waarden worden ge-escaped

Alle waarden staan tussen enkele aanhalingstekens en enkele aanhalingstekens die erin voorkomen, worden verdubbeld (O'Brien wordt 'O''Brien'). Dat is de SQL-92-manier en werkt in elke belangrijke database. De converter doet geen typeconversie: alles wordt als stringliteraal uitgevoerd, dus de impliciete conversie van de database maakt van '42' een geheel getal wanneer de kolom INT is.

Tips voor schone imports

  • Maak eerst de tabel aan. De converter genereert alleen INSERT-opdrachten, geen CREATE TABLE. Combineer het met een schema dat je handmatig definieert of met je ORM genereert.
  • Splits grote bestanden op. Plak 500-1000 rijen per keer als je SQL-client een limiet op de grootte van een statement heeft.
  • Verpak in een transactie. Zet bij meer dan een paar honderd rijen BEGIN; en COMMIT; (of START TRANSACTION;/COMMIT;) rond het geplakte blok. Dat is veel sneller dan elke opdracht afzonderlijk automatisch committen.

Wanneer je SQL-generatie beter overslaat

Als je bestand meer dan ongeveer 50.000 rijen bevat, zijn native bulkloaders (COPY in Postgres, LOAD DATA INFILE in MySQL en bcp in SQL Server) een orde van grootte sneller dan INSERT-opdrachten uit een script. Deze tool is bedoeld voor snelle imports, het vullen met testgegevens en eenmalige migraties.

Veelgestelde vragen

Nee. Het genereert alleen INSERT-opdrachten. Definieer het schema zelf vooraf met CREATE TABLE; zo houd je de controle over kolomtypen, lengtes en beperkingen, in plaats van de converter te laten gokken.

Met één wijziging: vervang de backtick-aanhalingstekens rond de tabel- en kolomnamen door dubbele aanhalingstekens. De waarden staan tussen enkele aanhalingstekens en draaien ongewijzigd op elk SQL-92-dialect.

Enkele aanhalingstekens binnen waarden worden verdubbeld (O''Brien), wat de standaard-SQL-escape is. Backslashes, procenttekens en underscores worden letterlijk doorgegeven; ze krijgen pas een speciale betekenis in LIKE-patronen.

Ja, het CSV-bestand wordt naar onze server gestuurd zodat de SQL kan worden gegenereerd. Het wordt niet opgeslagen en niet aan de paginalink toegevoegd.

Gerelateerde tools