Naar de inhoud

Excel omzetten naar Oracle

Zet je Excel-bestand neer en krijg een Oracle-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 Oracle.

SET DEFINE OFF

CREATE TABLE clientes_2024 (
    no_cliente VARCHAR2(8 CHAR) NOT NULL,
    nombre VARCHAR2(16 CHAR) NOT NULL,
    c_p VARCHAR2(8 CHAR) NOT NULL,
    alta DATE NOT NULL,
    activo NUMBER(1) NOT NULL,
    saldo NUMBER(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

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

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 Oracle hem zonder aanhalingstekens leest.
  4. Kolom "C.P." heet nu c_p, zodat Oracle 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:

Van Excel naar Oracle, kolom voor kolom

Het voorbeeld hierboven, clientes_2024.xlsx, zoals IntoSQL het voor Oracle schrijft: wat elke kolom in het bestand bevat, welk type ze krijgt en hoe haar eerste waarde in het script terechtkomt.

In het bestandEerste waardeKolomType in OracleIn het script
Nº Cliente00127no_clienteVARCHAR2(8 CHAR)'00127'
NombrePeña MuñoznombreVARCHAR2(16 CHAR)'Peña Muñoz'
C.P.01234c_pVARCHAR2(8 CHAR)'01234'
Alta03/02/2024altaDATEDATE '2024-02-03'
ActivosíactivoNUMBER(1)1
Saldo1.234,50saldoNUMBER(6,2)1234.50

Het script in Oracle laden

De download is een standaard .sql-bestand. Voer het uit met de eigen tools van Oracle.

Vanuit een terminal

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.

Vanuit een databasetool

Open het script in SQL Developer en kies Run Script (F5).

Wat je moet weten over Excel-bestanden en Oracle

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 Oracle

  • Ja- en nee-waarden worden NUMBER(1), met 1 of 0, wat elke Oracle-versie accepteert.
  • Tekst is VARCHAR2 met een lengte in tekens; boven 4000 bytes wordt het CLOB. Oracle slaat lege tekst op als NULL.
  • Rijen worden ingevoegd met INSERT ALL, en lange waarden worden gesplitst zodat SQL*Plus ze accepteert.

Hoe elk soort waarde in Oracle wordt opgeslagen

WaardeOracle
Ja en neeNUMBER(1)
Gehele getallenNUMBER(10)
Grote gehele getallenNUMBER(19)
Decimale getallenNUMBER(p,s)
DrijvendekommagetallenBINARY_DOUBLE
DatumsDATE
TijdstippenINTERVAL DAY(0) TO SECOND
Datums met tijdTIMESTAMP
Datums met tijd en tijdverschilTIMESTAMP WITH TIME ZONE
TekstVARCHAR2(n CHAR)CLOB

Vragen over Excel naar Oracle

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

Hoe zet ik Excel om naar Oracle?

Zet je bestand neer op de converter bovenaan deze pagina. Die vindt de kopregel, leest elke waarde en schrijft het Oracle-script, met elke correctie vermeld. Download het script en voer het uit met SQL*Plus.

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 Oracle-types gebruikt het?

Ja/nee-waarden worden NUMBER(1), gehele getallen NUMBER(10), decimalen NUMBER(p,s), datums DATE, datums met tijd TIMESTAMP en tekst VARCHAR2(n CHAR). De groottes volgen uit de langste waarde in elke kolom.

Blijven voorloopnullen behouden in Oracle?

Ja. Een code zoals 00127 blijft tekst, dus Oracle slaat hem op als VARCHAR2(8 CHAR) en het script schrijft hem als '00127'.

Kan het de data zonder script in Oracle laden?

Nee. Download het script en voer het uit met SQL*Plus. Laden zonder script werkt voor PostgreSQL, MySQL, MariaDB en SQLite, vanuit de desktopapp of de opdrachtregel.

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.