JSON omzetten naar PostgreSQL
Zet je JSON-bestand neer en krijg een PostgreSQL-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 PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE pedidos_2024 (
pedido text NOT NULL,
cliente text NOT NULL,
fecha timestamptz NOT NULL,
total numeric(6,2) NOT NULL,
pagado boolean NOT NULL,
notas text
);
INSERT INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES
('000481', 'Peña Muñoz', '2024-02-03 10:15:00+00:00', 1234.5, TRUE, NULL),
('000482', 'José Ángel Ruiz', '2024-02-15 16:40:00+00:00', 99.9, FALSE, 'Entrega en la tarde'),
('000483', 'Zoë Ortíz', '2024-02-29 09:05:00+00:00', 12, TRUE, NULL),
('000484', 'Ñuño Castañeda', '2024-03-11 13:30:00+00:00', 980.75, TRUE, 'Factura con "RFC"');
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 PostgreSQL, kolom voor kolom
Het voorbeeld hierboven, pedidos_2024.json, zoals IntoSQL het voor PostgreSQL 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 PostgreSQL | In het script |
|---|---|---|---|---|
| pedido | 000481 | pedido | text | '000481' |
| cliente | Peña Muñoz | cliente | text | 'Peña Muñoz' |
| fecha | 2024-02-03T10:15:00Z | fecha | timestamptz | '2024-02-03 10:15:00+00:00' |
| total | 1234.5 | total | numeric(6,2) | 1234.5 |
| pagado | true | pagado | boolean | TRUE |
| notas | - | notas | text | NULL |
Het script in PostgreSQL laden
De download is een standaard .sql-bestand. Voer het uit met de eigen tools van PostgreSQL.
Vanuit een terminal
psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sqlON_ERROR_STOP laat psql stoppen bij de eerste fout. Het script draait in één transactie, dus een mislukte import laat de database zoals hij was.
Vanuit een databasetool
Open het script in pgAdmin of DBeaver in een queryvenster en voer het uit.
Zonder scriptPro
IntoSQL Pro laadt het bestand rechtstreeks in PostgreSQL vanuit de desktopapp of de opdrachtregel, zonder een script te schrijven.
intosql load pedidos_2024.json --into postgres://user@localhost/mydbWat je moet weten over JSON-bestanden en PostgreSQL
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 PostgreSQL
- Decimale getallen behouden hun exacte cijfers als numeric(p,s), en datums met tijdverschil worden timestamptz.
- Tekst in PostgreSQL kan het NUL-teken niet bevatten, dus het wordt verwijderd uit de waarden die het hebben.
- Het script draait in één transactie, dus een mislukte import laat niets half af achter.
Hoe elk soort waarde in PostgreSQL wordt opgeslagen
| Waarde | PostgreSQL |
|---|---|
| Ja en nee | boolean |
| Gehele getallen | integer |
| Grote gehele getallen | bigint |
| Decimale getallen | numeric(p,s) |
| Drijvendekommagetallen | double precision |
| Datums | date |
| Tijdstippen | time |
| Datums met tijd | timestamp |
| Datums met tijd en tijdverschil | timestamptz |
| Tekst | text |
Vragen over JSON naar PostgreSQL
Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina
Hoe zet ik JSON om naar PostgreSQL?
Zet je bestand neer op de converter bovenaan deze pagina. Die vindt de kopregel, leest elke waarde en schrijft het PostgreSQL-script, met elke correctie vermeld. Download het script en voer het uit met psql.
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 PostgreSQL-types gebruikt het?
Ja/nee-waarden worden boolean, gehele getallen integer, decimalen numeric(p,s), datums date, datums met tijd timestamp en tekst text. De groottes volgen uit de langste waarde in elke kolom.
Blijven voorloopnullen behouden in PostgreSQL?
Ja. Een code zoals 000481 blijft tekst, dus PostgreSQL slaat hem op als text en het script schrijft hem als '000481'.
Kan het de data zonder script in PostgreSQL laden?
Ja, met IntoSQL Pro. De desktopapp en de opdrachtregel maken verbinding met PostgreSQL en laden de rijen rechtstreeks, nadat ze eerst de tabel hebben aangemaakt.
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.