Naar de inhoud

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.

Je bestand
jsonpedidos_2024.jsonVoorbeeldbestand, 771 byte
Je database

4 rijen geconverteerd, 2 correcties, geen afgewezen

Tonen
De eerste rijen van pedidos_2024.json, met elke correctie gemarkeerd
Rij
2000481Peña Muñoz2024-02-03T10:15:00Z1234.5true
3000482José Ángel Ruiz2024-02-15T16:40:00Z99.9falseEntrega en la tarde
4000483Zoë Ortíz2024-02-29T09:05:00Z12true
5000484Ñuño Castañeda2024-03-11T13:30:00Z980.75sí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

  1. Voorloopnullen behouden in "pedido": 000481 blijft 000481, opgeslagen als tekst.
  2. "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 bestandEerste waardeKolomType in OracleIn het script
pedido000481pedidoVARCHAR2(8 CHAR)'000481'
clientePeña MuñozclienteVARCHAR2(16 CHAR)'Peña Muñoz'
fecha2024-02-03T10:15:00ZfechaTIMESTAMP WITH TIME ZONETIMESTAMP '2024-02-03 10:15:00 +00:00'
total1234.5totalNUMBER(6,2)1234.5
pagadotruepagadoNUMBER(1)1
notas-notasVARCHAR2(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.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 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

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 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.