CSV omzetten naar Oracle
Zet je CSV-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.
5 rijen geconverteerd, 8 correcties, geen afgewezen
| Rij | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for Oracle.
SET DEFINE OFF
CREATE TABLE ventas_2024 (
folio VARCHAR2(8 CHAR) NOT NULL,
cliente VARCHAR2(16 CHAR) NOT NULL,
ciudad VARCHAR2(16 CHAR) NOT NULL,
fecha DATE NOT NULL,
importe NUMBER(6,2),
pagado NUMBER(1) NOT NULL
);
INSERT ALL
INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00412', 'Peña Muñoz', 'Mérida', DATE '2024-02-15', 1234.50, 1)
INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00413', 'José Ángel Ruiz', 'León', DATE '2024-02-03', 99.90, 0)
INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00414', 'Zoë Ortíz', 'Querétaro', DATE '2024-02-29', NULL, 1)
INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00415', 'Ñuño Castañeda', 'Oaxaca', DATE '2024-02-28', 7.25, 0)
INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00416', 'Iñaki Olaizola', 'Mazatlán', DATE '2024-03-11', 980.75, 1)
SELECT 1 FROM DUAL;
COMMIT;
Correcties
- Het bestand was gecodeerd in windows‑1252; het is omgezet naar UTF-8.
- De koprij staat op rij 4; de rijen erboven zijn weggelaten.
- Rij 10 ("TOTAL") is een totaal en is daarom weggelaten.
- Voorloopnullen behouden in "Folio": 00412 blijft 00412, opgeslagen als tekst.
- 15/02/2024 bewijst dat de datums in "Fecha" met de dag beginnen, dus 03/02/2024 wordt gelezen als 2024‑02‑03.
- Getallen in "Importe" gebruiken een decimale komma: 1.234,50 wordt gelezen als 1234.50.
- N/A in "Importe" gelezen als leeg (1 van 5 waarden).
- "Pagado" bevat ja- en nee-woorden (sí, no), opgeslagen als boolean.
Je bestand wordt op deze computer omgezet en nooit geüpload.
Andere voorbeelden:
Van CSV naar Oracle, kolom voor kolom
Het voorbeeld hierboven, ventas_2024.csv, 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 |
|---|---|---|---|---|
| Folio | 00412 | folio | VARCHAR2(8 CHAR) | '00412' |
| Cliente | Peña Muñoz | cliente | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| Ciudad | Mérida | ciudad | VARCHAR2(16 CHAR) | 'Mérida' |
| Fecha | 15/02/2024 | fecha | DATE | DATE '2024-02-15' |
| Importe | 1.234,50 | importe | NUMBER(6,2) | 1234.50 |
| Pagado | sí | pagado | NUMBER(1) | 1 |
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 @ventas_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 CSV-bestanden en Oracle
Wat IntoSQL leest in CSV-bestanden
- De codering wordt herkend, ook Windows-1252 en UTF-16, zodat accenten en ñ intact aankomen.
- Het scheidingsteken wordt herkend: komma, puntkomma, tab of verticale streep. Met een puntkomma worden decimale komma's zoals 1.234,50 als getallen gelezen.
- Waarden tussen aanhalingstekens kunnen scheidingstekens en regeleinden bevatten.
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 CSV naar Oracle
Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina
Hoe zet ik CSV 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.
Wat als mijn CSV puntkomma's of tabs gebruikt?
Het scheidingsteken wordt herkend: komma, puntkomma, tab of verticale streep. Je kunt het ook instellen onder Meer opties. Met een puntkomma worden decimale komma's zoals 1.234,50 als getallen gelezen.
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 00412 blijft tekst, dus Oracle slaat hem op als VARCHAR2(8 CHAR) en het script schrijft hem als '00412'.
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 CSV-bestand zijn?
De browser leest een CSV terwijl die binnenstroomt, dus bestanden van meerdere gigabytes werken. Op een laptop met Apple M4 converteert de opdrachtregel een CSV van 174 MB met een miljoen rijen in minder dan een seconde.