JSON omzetten naar Oracle
Zet je JSON-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, 2 correcties, geen afgewezen
| Rij | ||||||
|---|---|---|---|---|---|---|
| 2 | 000481 | Peña Muñoz | 2024-02-03T10:15:00Z | 1234.5 | true | |
| 3 | 000482 | José Ángel Ruiz | 2024-02-15T16:40:00Z | 99.9 | false | Entrega en la tarde |
| 4 | 000483 | Zoë Ortíz | 2024-02-29T09:05:00Z | 12 | true | |
| 5 | 000484 | Ñuño Castañeda | 2024-03-11T13:30:00Z | 980.75 | sí | Factura con "RFC" |
-- Written by IntoSQL for Oracle.
SET DEFINE OFF
CREATE TABLE pedidos_2024 (
pedido VARCHAR2(8 CHAR) NOT NULL,
cliente VARCHAR2(16 CHAR) NOT NULL,
fecha TIMESTAMP WITH TIME ZONE NOT NULL,
total NUMBER(6,2) NOT NULL,
pagado NUMBER(1) NOT NULL,
notas VARCHAR2(32 CHAR)
);
INSERT ALL
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000481', 'Peña Muñoz', TIMESTAMP '2024-02-03 10:15:00 +00:00', 1234.5, 1, NULL)
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000482', 'José Ángel Ruiz', TIMESTAMP '2024-02-15 16:40:00 +00:00', 99.9, 0, 'Entrega en la tarde')
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000483', 'Zoë Ortíz', TIMESTAMP '2024-02-29 09:05:00 +00:00', 12, 1, NULL)
INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES ('000484', 'Ñuño Castañeda', TIMESTAMP '2024-03-11 13:30:00 +00:00', 980.75, 1, 'Factura con "RFC"')
SELECT 1 FROM DUAL;
COMMIT;
Correcties
- Voorloopnullen behouden in "pedido": 000481 blijft 000481, opgeslagen als tekst.
- "pagado" bevat ja- en nee-woorden (sí), opgeslagen als boolean.
Je bestand wordt op deze computer omgezet en nooit geüpload.
Andere voorbeelden:
Van JSON naar Oracle, kolom voor kolom
Het voorbeeld hierboven, pedidos_2024.json, 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 |
|---|---|---|---|---|
| pedido | 000481 | pedido | VARCHAR2(8 CHAR) | '000481' |
| cliente | Peña Muñoz | cliente | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| fecha | 2024-02-03T10:15:00Z | fecha | TIMESTAMP WITH TIME ZONE | TIMESTAMP '2024-02-03 10:15:00 +00:00' |
| total | 1234.5 | total | NUMBER(6,2) | 1234.5 |
| pagado | true | pagado | NUMBER(1) | 1 |
| notas | - | notas | VARCHAR2(32 CHAR) | NULL |
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 @pedidos_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 JSON-bestanden en Oracle
Wat IntoSQL leest in JSON-bestanden
- Het bestand kan een array van objecten zijn, een object dat die array onder een sleutel zoals data bevat, of één object per regel (NDJSON).
- Elke sleutel wordt een kolom. Objecten en arrays binnen een waarde blijven JSON-tekst.
- Getallen behouden hun exacte cijfers, en ISO 8601-datums worden datums of tijdstempels.
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 JSON naar Oracle
Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina
Hoe zet ik JSON 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.
Welke vorm moet het JSON-bestand hebben?
Een array van objecten, een object dat die array onder een sleutel zoals data bevat, of één object per regel (NDJSON). Elke sleutel wordt een kolom.
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 000481 blijft tekst, dus Oracle slaat hem op als VARCHAR2(8 CHAR) en het script schrijft hem als '000481'.
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 JSON-bestand zijn?
NDJSON, één object per regel, wordt gelezen terwijl het binnenstroomt, dus bestanden van meerdere gigabytes werken in de browser. Een JSON-document wordt in zijn geheel gelezen, dus de grens is het geheugen dat de browser deze pagina geeft. De desktopapp en de opdrachtregel nemen bestanden van elke grootte.