JSON omzetten naar SQL
Zet je JSON-bestand neer en kies je database voor een SQL-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:
Eén JSON-bestand, zes databases
Het voorbeeld hierboven, pedidos_2024.json, en het type dat elke kolom in elke database krijgt.
| In het bestand | Eerste waarde | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| pedido | 000481 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| fecha | 2024-02-03T10:15:00Z | timestamptz | datetime | datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| total | 1234.5 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| pagado | true | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| notas | - | text | varchar(32) | varchar(32) | TEXT | nvarchar(32) | VARCHAR2(32 CHAR) |
Het script in je database laden
De download is een standaard .sql-bestand. Elke database voert het uit met haar eigen tools.
PostgreSQL
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.
MySQL
mysql --default-character-set=utf8mb4 mydb < pedidos_2024.mysql.sqlHet script stelt zelf utf8mb4 in; de vlag laat de client het op dezelfde manier versturen, zodat accenten intact aankomen.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < pedidos_2024.mariadb.sqlHet script stelt zelf utf8mb4 in; de vlag laat de client het op dezelfde manier versturen, zodat accenten intact aankomen.
SQLite
sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sqlHet databasebestand wordt aangemaakt als het nog niet bestaat. De converter downloadt ook een kant-en-klare .sqlite-database, zonder enige opdracht.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i pedidos_2024.sql_server.sql-f 65001 leest het bestand als UTF-8, zodat accenten en ñ aankomen zoals ze geschreven zijn.
Oracle
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sqlHet script zet substitutievariabelen uit (SET DEFINE OFF), zodat een ampersand in je data een ampersand blijft.
De opdrachtregel laadt bestanden gratis rechtstreeks in een SQLite-database. Met IntoSQL Pro laden de opdrachtregel en de desktopapp ook in PostgreSQL, MySQL en MariaDB. Voor SQL Server en Oracle voer je het script uit.
Wat je moet weten over JSON-bestanden en elke database
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 elke database
- Kies de database zodra het bestand open is: elke database krijgt de typen die hij ondersteunt.
Hoe elk soort waarde in elke database wordt opgeslagen
| Waarde | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Ja en nee | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Gehele getallen | integer | int | int | INTEGER | int | NUMBER(10) |
| Grote gehele getallen | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Decimale getallen | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Drijvendekommagetallen | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Datums | date | date | date | DATE | date | DATE |
| Tijdstippen | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Datums met tijd | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Datums met tijd en tijdverschil | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Tekst | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Vragen over JSON naar SQL
Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina
Hoe zet ik JSON om naar SQL?
Zet je bestand neer op de converter bovenaan deze pagina en kies je database: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server of Oracle. Elke database krijgt de types die ze ondersteunt. Download het script en voer het uit in je database.
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 types gebruikt het in elke database?
Elke database krijgt haar eigen types: ja/nee-waarden zijn boolean in PostgreSQL, tinyint(1) in MySQL en MariaDB, bit in SQL Server en NUMBER(1) in Oracle. De tabel op deze pagina toont elke soort waarde.
Blijven voorloopnullen behouden?
Ja. Een code zoals 000481 blijft in elke database tekst, geschreven als '000481', dus er gaat geen nul verloren.
Kan het de data zonder script laden?
Ja. De opdrachtregel laadt gratis in SQLite, en met IntoSQL Pro laden de desktopapp en de opdrachtregel in PostgreSQL, MySQL en MariaDB. Voor SQL Server en Oracle voer je het script uit.
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.