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.
4 rijen geconverteerd, 10 correcties, geen afgewezen
| Rij | ||||||
|---|---|---|---|---|---|---|
| 5 | 00127 | Peña Muñoz | 01234 | 03/02/2024 | sí | 1.234,50 |
| 6 | 00128 | José Ángel | 09870 | 15/02/2024 | no | N/A |
| 7 | 00129 | Zoë Ortíz | 44100 | 29/02/2024 | sí | -12,00 |
| 8 | 00130 | Ñuño Castañeda | 06700 | 11/03/2024 | no | 980,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
- De koprij staat op rij 4; de rijen erboven zijn weggelaten.
- Rij 9 ("TOTAL") is een totaal en is daarom weggelaten.
- Kolom "Nº Cliente" heet nu no_cliente, zodat Oracle hem zonder aanhalingstekens leest.
- Kolom "C.P." heet nu c_p, zodat Oracle hem zonder aanhalingstekens leest.
- Voorloopnullen behouden in "Nº Cliente": 00127 blijft 00127, opgeslagen als tekst.
- Voorloopnullen behouden in "C.P.": 01234 blijft 01234, opgeslagen als tekst.
- 15/02/2024 bewijst dat de datums in "Alta" met de dag beginnen, dus 03/02/2024 wordt gelezen als 2024‑02‑03.
- "Activo" bevat ja- en nee-woorden (sí, no), opgeslagen als boolean.
- Getallen in "Saldo" gebruiken een decimale komma: 1.234,50 wordt gelezen als 1234.50.
- 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 bestand | Eerste waarde | Kolom | Type in Oracle | In het script |
|---|---|---|---|---|
| Nº Cliente | 00127 | no_cliente | VARCHAR2(8 CHAR) | '00127' |
| Nombre | Peña Muñoz | nombre | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| C.P. | 01234 | c_p | VARCHAR2(8 CHAR) | '01234' |
| Alta | 03/02/2024 | alta | DATE | DATE '2024-02-03' |
| Activo | sí | activo | NUMBER(1) | 1 |
| Saldo | 1.234,50 | saldo | NUMBER(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.sqlHet 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
| Waarde | Oracle |
|---|---|
| Ja en nee | NUMBER(1) |
| Gehele getallen | NUMBER(10) |
| Grote gehele getallen | NUMBER(19) |
| Decimale getallen | NUMBER(p,s) |
| Drijvendekommagetallen | BINARY_DOUBLE |
| Datums | DATE |
| Tijdstippen | INTERVAL DAY(0) TO SECOND |
| Datums met tijd | TIMESTAMP |
| Datums met tijd en tijdverschil | TIMESTAMP WITH TIME ZONE |
| Tekst | VARCHAR2(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.