Naar de inhoud

Excel omzetten naar SQL

Zet je Excel-bestand neer en kies je database voor een SQL-script met CREATE TABLE- en INSERT-statements. Elke kolom krijgt een type, en elke correctie wordt vermeld met rij en kolom.

Je bestand
xlsxclientes_2024.xlsxVoorbeeldbestand, 7 kB
Je database

4 rijen geconverteerd, 10 correcties, geen afgewezen

Tonen
De eerste rijen van clientes_2024.xlsx, met elke correctie gemarkeerd
Rij
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for PostgreSQL.

SET client_encoding = 'UTF8';
BEGIN;

CREATE TABLE clientes_2024 (
    no_cliente text NOT NULL,
    nombre text NOT NULL,
    c_p text NOT NULL,
    alta date NOT NULL,
    activo boolean NOT NULL,
    saldo numeric(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
('00127', 'Peña Muñoz', '01234', '2024-02-03', TRUE, 1234.50),
('00128', 'José Ángel', '09870', '2024-02-15', FALSE, NULL),
('00129', 'Zoë Ortíz', '44100', '2024-02-29', TRUE, -12.00),
('00130', 'Ñuño Castañeda', '06700', '2024-03-11', FALSE, 980.75);

COMMIT;

Correcties

  1. De koprij staat op rij 4; de rijen erboven zijn weggelaten.
  2. Rij 9 ("TOTAL") is een totaal en is daarom weggelaten.
  3. Kolom "Nº Cliente" heet nu no_cliente, zodat PostgreSQL hem zonder aanhalingstekens leest.
  4. Kolom "C.P." heet nu c_p, zodat PostgreSQL hem zonder aanhalingstekens leest.
  5. Voorloopnullen behouden in "Nº Cliente": 00127 blijft 00127, opgeslagen als tekst.
  6. Voorloopnullen behouden in "C.P.": 01234 blijft 01234, opgeslagen als tekst.
  7. 15/02/2024 bewijst dat de datums in "Alta" met de dag beginnen, dus 03/02/2024 wordt gelezen als 2024‑02‑03.
  8. "Activo" bevat ja- en nee-woorden (sí, no), opgeslagen als boolean.
  9. Getallen in "Saldo" gebruiken een decimale komma: 1.234,50 wordt gelezen als 1234.50.
  10. N/A in "Saldo" gelezen als leeg (1 van 4 waarden).

Je bestand wordt op deze computer omgezet en nooit geüpload.

Andere voorbeelden:

Eén Excel-bestand, zes databases

Het voorbeeld hierboven, clientes_2024.xlsx, en het type dat elke kolom in elke database krijgt.

In het bestandEerste waardePostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Nº Cliente00127textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
NombrePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
C.P.01234textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
Alta03/02/2024datedatedateDATEdateDATE
Activosíbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Saldo1.234,50numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)

Het script in je database laden

De download is een standaard .sql-bestand. Elke database voert het uit met haar eigen tools.

  • PostgreSQL

    psql -v ON_ERROR_STOP=1 -d mydb -f clientes_2024.postgresql.sql

    ON_ERROR_STOP laat psql stoppen bij de eerste fout. Het script draait in één transactie, dus een mislukte import laat de database zoals hij was.

  • MySQL

    mysql --default-character-set=utf8mb4 mydb < clientes_2024.mysql.sql

    Het script stelt zelf utf8mb4 in; de vlag laat de client het op dezelfde manier versturen, zodat accenten intact aankomen.

  • MariaDB

    mariadb --default-character-set=utf8mb4 mydb < clientes_2024.mariadb.sql

    Het script stelt zelf utf8mb4 in; de vlag laat de client het op dezelfde manier versturen, zodat accenten intact aankomen.

  • SQLite

    sqlite3 clientes_2024.db < clientes_2024.sqlite.sql

    Het databasebestand wordt aangemaakt als het nog niet bestaat. De converter downloadt ook een kant-en-klare .sqlite-database, zonder enige opdracht.

  • SQL Server

    sqlcmd -S localhost -d mydb -f 65001 -i clientes_2024.sql_server.sql

    -f 65001 leest het bestand als UTF-8, zodat accenten en ñ aankomen zoals ze geschreven zijn.

  • Oracle

    sqlplus user@//localhost/mydb @clientes_2024.oracle.sql

    Het script zet substitutievariabelen uit (SET DEFINE OFF), zodat een ampersand in je data een ampersand blijft.

De opdrachtregel laadt bestanden gratis rechtstreeks in een SQLite-database. Met IntoSQL Pro laden de opdrachtregel en de desktopapp ook in PostgreSQL, MySQL en MariaDB. Voor SQL Server en Oracle voer je het script uit.

Wat je moet weten over Excel-bestanden en elke database

Wat IntoSQL leest in Excel-bestanden

  • De kopregel wordt gevonden, ook als er titels of notities boven staan, en een totaalrij aan het einde wordt weggelaten.
  • Datums die als Excel-serienummers zijn opgeslagen, worden echte datums, in zowel het 1900- als het 1904-datumsysteem.
  • Codes met voorloopnullen, zoals 00127, blijven tekst. Heeft een werkmap meerdere bladen, dan kies je het blad.

Wat je moet weten over elke database

  • Kies de database zodra het bestand open is: elke database krijgt de typen die hij ondersteunt.

Hoe elk soort waarde in elke database wordt opgeslagen

WaardePostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Ja en neebooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Gehele getallenintegerintintINTEGERintNUMBER(10)
Grote gehele getallenbigintbigintbigintINTEGERbigintNUMBER(19)
Decimale getallennumeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
Drijvendekommagetallendouble precisiondoubledoubleREALfloatBINARY_DOUBLE
DatumsdatedatedateDATEdateDATE
Tijdstippentimetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
Datums met tijdtimestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
Datums met tijd en tijdverschiltimestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
Teksttextvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(n)nvarchar(max)VARCHAR2(n CHAR)CLOB

Vragen over Excel naar SQL

Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina

Hoe zet ik Excel om naar SQL?

Zet je bestand neer op de converter bovenaan deze pagina en kies je database: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server of Oracle. Elke database krijgt de types die ze ondersteunt. Download het script en voer het uit in je database.

Welk blad van de werkmap wordt geconverteerd?

Het eerste zichtbare blad. Heeft een werkmap er meer dan één, dan verschijnt de optie Blad, zodat je een ander kunt kiezen.

Welke types gebruikt het in elke database?

Elke database krijgt haar eigen types: ja/nee-waarden zijn boolean in PostgreSQL, tinyint(1) in MySQL en MariaDB, bit in SQL Server en NUMBER(1) in Oracle. De tabel op deze pagina toont elke soort waarde.

Blijven voorloopnullen behouden?

Ja. Een code zoals 00127 blijft in elke database tekst, geschreven als '00127', dus er gaat geen nul verloren.

Kan het de data zonder script laden?

Ja. De opdrachtregel laadt gratis in SQLite, en met IntoSQL Pro laden de desktopapp en de opdrachtregel in PostgreSQL, MySQL en MariaDB. Voor SQL Server en Oracle voer je het script uit.

Hoe groot mag het Excel-bestand zijn?

In de browser wordt een werkmap in zijn geheel gelezen, dus de grens is het geheugen dat de browser deze pagina geeft. De desktopapp en de opdrachtregel nemen werkmappen van elke grootte; op een laptop met Apple M4 converteert de opdrachtregel een werkmap van 117 MB met een miljoen rijen in ongeveer een seconde.