XLSX naar SQL omzetten

Hier zet je XLSX naar SQL om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Opnieuw opgebouwd SQL werkt anders dan XLSX. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat SQL kan uitdrukken wordt getrouw weergegeven, en wat daar geen equivalent heeft blijft helemaal weg.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.
  • Goed om te weten Alleen het eerste blad wordt gelezen, en daarvan alleen de waarden. Formules, opmaak, kolombreedtes en elk volgend blad blijven achter.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Wat je krijgt zijn rijen, geen schema

De uitvoer is een bestand met INSERT-statements, één per rij van het werkblad, elk met de tabelnaam en de kolommen uit de kopregel. Er staat geen CREATE TABLE bovenaan, en dat is bewust: een rekenblad heeft geen types, lengtes, sleutels of beperkingen, dus elk schema daaruit afgeleid zou verzinsel zijn dat als feit gepresenteerd wordt.

Een verkeerde gok in een rij is één slechte record. Een verkeerde gok in een schema is een VARCHAR(50) die twee jaar lang adressen afkapt. Heb je zelf ook een tabel nodig, schrijf dan de CREATE-instructie zelf en zet die boven het bestand.

De bestandsnaam bepaalt de tabelnaam

De naam van het werkboek, zonder extensie, wordt de tabel in elke instructie. Ze wordt eerst opgeschoond: alles dat geen letter, cijfer of underscore is wordt een underscore, en een naam die met een cijfer begint krijgt er een ervoor.

Het praktische advies volgt direct. Hernoem het bestand naar precies de tabel waarin je laadt voordat je omzet, en de uitvoer draait zoals hij is. Dezelfde opschoning geldt voor de kolomnamen uit de kopregel, dus stem die vooraf af op de tabel.

Hoe elke waarde geschreven wordt

Getallen worden kaal geschreven. Tekst wordt tussen enkele aanhalingstekens gezet met een apostrof erin verdubbeld, de ANSI-vorm die elke grote engine begrijpt — O'Brien wordt 'O''Brien'. Backslash-escaping wordt bewust niet gebruikt, want dat is een MySQL-uitbreiding.

Een lege cel wordt het sleutelwoord NULL in plaats van een lege tekst, meestal de juiste lezing van een leegte in een rekenblad. De waarden zelf worden niet herformatteerd onderweg — een prijs die getoond wordt als 19,99 wordt geschreven als 19.99.

TRUE en FALSE worden niet overal geaccepteerd

Een boolean-cel wordt geschreven als het letterlijke TRUE of FALSE. Postgres accepteert dat direct, MySQL behandelt ze als aliassen voor 1 en 0, en SQLite accepteert ze al jaren. SQL Server niet: zijn bit-type wil 1 en 0.

Het is een fix van twee seconden zodra je het weet — vervang de letterlijke waarden voor je het script draait — en een irritant kwartier als je het ontdekt bij een fout op statement vierhonderd. Bekijk het eerste statement in het bestand voor je het laatste draait.

Datumkolommen zijn waar deze lading misgaat

Een rekenblad slaat een datum op als een dagteller met een weergaveopmaak eromheen, en de omzetting schrijft de waarde in plaats van het uiterlijk. 1 januari 2024 wordt 45292, geteld vanaf eind december 1899.

In een numerieke kolom landt dat stilletjes en fout; in een datumkolom wordt het geweigerd, wat op zijn minst luid is. Repareer het in het werkblad door de kolom om te zetten naar tekst in een ondubbelzinnig formaat, of laad in een staging-kolom en zet binnen de database om.

Identificatienummers houden hun voorloopnullen

Een code opgeslagen als tekst in het blad wordt geschreven als gequote string, dus 007 komt aan als '007' en een rekeningnummer met voorloopnullen komt intact in een VARCHAR-kolom. Dit is het omgekeerde van wat gebeurt als dezelfde data via een CSV en een onzorgvuldige rekenbladronde gaat.

De nuttige test voor of een kolom een identificatie is: zou het optellen van twee waarden ooit iets betekenen? Postcodes, artikelnummers en telefoonnummers falen die test allemaal, en horen in een tekstkolom in de doeltabel net als in het blad.

De kolomlijst, en rijen die niet allemaal overeenkomen

Elk statement noemt zijn kolommen expliciet in plaats van te vertrouwen op de volgorde van de tabel, wat het bestand overleeft in een tabel die inmiddels een kolom erbij kreeg. De set kolommen is de unie van velden gevonden over het hele blad.

Die uitvoerigheid heeft een kostenplaatje. De kolomlijst herhaalt zich op elke regel, dus het bestand is groter dan de data erin: vijftigduizend rijen van zes kolommen kwamen uit op ongeveer 5,7 MB SQL, tegen ruwweg 4,3 MB voor de .xlsx waar het van gemaakt was.

Vijftigduizend losse statements, en wat daaraan te doen

De statements worden één per rij uitgezonden zonder transactie eromheen en zonder meerregelige VALUES-batching. Zo tegen Postgres of MySQL draaien is vijftigduizend rondreizen en vijftigduizend impliciete commits, traag genoeg om op te vallen.

Het bestand omwikkelen met BEGIN en COMMIT lost beide in één keer op en kost twee regels. Voor echt grote ladingen is het bulkpad de betere weg — COPY in Postgres, LOAD DATA in MySQL, .import in SQLite.

Eén werkblad, in je browser, zonder iets te versturen

Het eerste blad van het werkboek wordt omgezet, want een reeks INSERT-statements richt zich op één tabel. Staat het gewenste blad niet vooraan, verplaats het dan en zet opnieuw om.

Alles gebeurt lokaal: het werkboek wordt ontleed en de statements geschreven in de pagina, zonder upload. Dat telt zwaarder voor dit paar dan voor de meeste, want een rekenblad op weg naar een database is vaak klantgegevens of transacties.

Wanneer een gescheiden bestand beter is om te laden

Is de doeltabel leeg en het volume groot, dan is SQL genereren de langzame weg. Elke database heeft een bulklader die een gescheiden bestand rechtstreeks leest, types eenmaal toepast en in blokken schrijft.

INSERT-statements verdienen hun plek bij een kleine lading, wanneer ze gecontroleerd of geversioneerd moeten worden voordat ze draaien, of wanneer je alleen toegang hebt tot een queryvenster.

Zo zet je XLSX naar SQL om

  1. Sleep je XLSX-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies SQL als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare SQL-bestand.

XLSX of SQL: wat er verandert

XLSX vergeleken met SQL
XLSXSQL
Volledige naamExcel-werkmapSQL-INSERT-opdrachten
Bestandsextensie.xlsx.sql
Mediatypeapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/sql
Voor het eerst gepubliceerd20071986
Uitgegeven doorMicrosoft
SpecificatieECMA-376ISO/IEC 9075
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenCSV, ODS, ParquetCSV, Parquet

Het resultaat openen

De gebruikelijke programma's overlappen niet: XLSX open je in Microsoft Excel, LibreOffice Calc en Google Sheets, SQL in PostgreSQL, MySQL en DBeaver — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.

Waarvoor elk formaat bedoeld is

De twee mikken op ander werk: XLSX op bewerken, SQL op gegevens tussen programma’s verplaatsen en archivering. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.

XLSX is het formaat van Microsoft, verschenen in 2007. Het is vastgelegd in ECMA-376, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.

SQL stamt uit 1986, vastgelegd in ISO/IEC 9075. PostgreSQL, MySQL en DBeaver lezen het formaat.

SQL verscheen in 1986 en XLSX in 2007. Het oudste is doorgaans het veiligste bestand om te overhandigen; het nieuwste doet hetzelfde werk met minder bytes.

Van XLSX naar SQL: veelgestelde vragen

Wordt mijn XLSX-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt. De motor achter juist dit paar is SheetJS, een lezer en schrijver van spreadsheets in JavaScript; je browser haalt die één keer op en bewaart hem.

Is XLSX naar SQL omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk. SheetJS wordt naar je eigen machine gehaald en draait daar, en daarom staat er geen teller op.

Gaat er kwaliteit verloren bij het omzetten van XLSX naar SQL?

XLSX en SQL beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. Alleen het eerste blad wordt gelezen, en daarvan alleen de waarden. Formules, opmaak, kolombreedtes en elk volgend blad blijven achter.

Moet ik iets installeren om een SQL-bestand te openen?

Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat SQL Insert Statements normaal weergeeft.

Meer over deze formaten