SQL-naar-CSV-converter

Soms is de enige kopie van de gegevens die je nodig hebt een .sql-bestand uit een back-up, een dump van INSERT INTO users (id, email, created_at) VALUES (...)-statements. Het alleen maar in een database laden om het weer te exporteren is traag. Deze converter leest de kolomlijst en elke VALUES-tuple rechtstreeks uit de INSERT-syntaxis en levert een CSV die je kunt openen in Excel, Google Sheets, Numbers of pandas zonder het schema ooit te herstellen.

Zo converteer je SQL-INSERTs naar CSV

  1. 1

    Plak de SQL

    Zet er een of meer INSERT-statements in. Zowel VALUES (...)-blokken met één rij als met meerdere rijen worden ondersteund.

  2. 2

    Kolommen automatisch herkend

    De parser leest de lijst `(col1, col2, ...)` vlak voor VALUES en behandelt die als de CSV-koprij.

  3. 3

    Rijen geëxtraheerd

    Elke tuple `(val1, val2, ...)` wordt een CSV-rij. Strings tussen enkele aanhalingstekens worden ontdaan van de aanhalingstekens; getallen en NULLs gaan door als tekst.

  4. 4

    Kopieer de CSV

    Pak de CSV-uitvoer en plak die in een spreadsheet, of sla die op met de extensie `.csv`.

Wat de parser accepteert

INSERT INTO users (id, email, created_at) VALUES
  (1, 'alice@example.com', '2024-01-12 09:00:00'),
  (2, 'bob@example.com',   '2024-01-13 10:30:00'),
  (3, 'carol@example.com', '2024-01-13 11:15:00');

Wordt:

id,email,created_at
1,alice@example.com,2024-01-12 09:00:00
2,bob@example.com,2024-01-13 10:30:00
3,carol@example.com,2024-01-13 11:15:00

Toegepaste CSV-escaperegels

  • Het scheidingsteken is altijd een komma; er is geen optie voor een ander scheidingsteken.
  • Velden met komma’s, dubbele aanhalingstekens of regeleindes worden tussen dubbele aanhalingstekens gezet.
  • Interne dubbele aanhalingstekens worden verdubbeld (" wordt ""), volgens RFC 4180.
  • Voorloop- en sluitende enkele aanhalingstekens van SQL-stringliterals worden verwijderd.
  • SQL NULL gaat door als de letterlijke tekst NULL; vervang die verderop als je tool lege cellen verwacht.

Beperkingen om te kennen

  • Kolomlijst vereist. De parser leest de kop uit de lijst (col1, col2, ...) vóór VALUES. Een kale INSERT INTO t VALUES (...) zonder de kolomlijst levert CSV-rijen zonder kop op.
  • Eén tabel tegelijk. Mengt je dump INSERTs voor verschillende tabellen, splits ze dan eerst. Rijen van verschillende breedte leveren een onregelmatige CSV op.
  • Geen CREATE TABLE-parsing. Kolomtypes worden niet gebruikt. Datums, JSON en binaire blobs komen door als platte tekst.
  • Elke haakjesgroep wordt een rij. De parser maakt van elke groep (...) een rij, dus sluitclausules met haakjes (ON DUPLICATE KEY UPDATE, RETURNING), functieaanroepen zoals NOW() of geneste arrays zoals (1,2,3) binnen een waarde voegen overtollige rijen toe. Beperk de invoer tot eenvoudige INSERT ... VALUES-tuples en vervang zulke uitdrukkingen door literals voordat je plakt.

Veelgestelde vragen

Ja, zolang de INSERT de standaardvorm INSERT INTO table (cols) VALUES (...) volgt, die deze databases delen. De tool draait geen volledige SQL-parser: hij haalt de kolomlijst en de waardetuples tussen haakjes eruit, dus houd elk statement bij eenvoudige INSERT-syntaxis.

Komma’s binnen SQL-strings tussen enkele aanhalingstekens blijven behouden. In de uitvoer wordt elk veld met een komma, aanhalingsteken of regeleinde tussen dubbele aanhalingstekens gezet en worden interne aanhalingstekens verdubbeld, volgens RFC 4180. Waarden die zelf haakjes bevatten, splitsen mogelijk niet netjes.

Nee. Je SQL wordt naar onze server gestuurd, in één keer geparsed en teruggestuurd, dus houd de invoer per keer bij enkele megabytes. Splits erg grote dumps in stukken (één INSERT-blok per stuk) en converteer ze in delen.

Nee, de uitvoer is een platte CSV. Kolomtypes, indexen en constraints staan in CREATE TABLE en vallen buiten het bereik van deze converter.

Je SQL wordt alleen naar onze server gestuurd om de CSV te maken en wordt niet opgeslagen; we bewaren een anonieme telling van hoeveel rijen zijn geconverteerd, nooit de SQL-tekst zelf.

Gerelateerde tools

Tool beschikbaar in andere talen