Konwersja JSON do SQL
Upuść plik JSON i wybierz bazę danych, aby dostać skrypt SQL z instrukcjami CREATE TABLE i INSERT. Każda kolumna dostaje typ, a każda poprawka jest wymieniona z wierszem i kolumną.
4 wiersze przekonwertowane, 2 poprawki, brak odrzuconych
| Wiersz | ||||||
|---|---|---|---|---|---|---|
| 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;
Poprawki
- Zachowano zera wiodące w "pedido": 000481 pozostaje 000481, zapisane jako tekst.
- "pagado" zawiera słowa tak i nie (sí), zapisane jako wartości logiczne.
Plik jest konwertowany na tym komputerze i nigdy nie jest wysyłany.
Inne przykłady:
Jeden plik JSON, sześć baz danych
Przykład powyżej, pedidos_2024.json, i typ, jaki każda jego kolumna dostaje w każdej bazie danych.
| W pliku | Pierwsza wartość | 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) |
Załaduj skrypt do swojej bazy danych
Pobierasz zwykły plik .sql. Każda baza danych uruchamia go własnymi narzędziami.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sqlON_ERROR_STOP zatrzymuje psql przy pierwszym błędzie. Skrypt działa w jednej transakcji, więc nieudane ładowanie zostawia bazę bez zmian.
MySQL
mysql --default-character-set=utf8mb4 mydb < pedidos_2024.mysql.sqlSkrypt sam ustawia utf8mb4; flaga sprawia, że klient wysyła go tak samo, więc polskie znaki docierają bez zmian.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < pedidos_2024.mariadb.sqlSkrypt sam ustawia utf8mb4; flaga sprawia, że klient wysyła go tak samo, więc polskie znaki docierają bez zmian.
SQLite
sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sqlPlik bazy danych powstaje, jeśli nie istnieje. Konwerter pobiera też gotową bazę .sqlite, bez żadnego polecenia.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i pedidos_2024.sql_server.sql-f 65001 odczytuje plik jako UTF-8, więc znaki diakrytyczne i ñ docierają tak, jak je zapisano.
Oracle
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sqlSkrypt wyłącza zmienne podstawiania (SET DEFINE OFF), więc znak & w danych pozostaje znakiem &.
Wiersz poleceń za darmo ładuje pliki prosto do bazy SQLite. Z IntoSQL Pro wiersz poleceń i aplikacja na komputer ładują też do PostgreSQL, MySQL i MariaDB. Dla SQL Server i Oracle uruchom skrypt.
Co warto wiedzieć o plikach JSON i każdej bazie danych
Co IntoSQL odczytuje w plikach JSON
- Plik może być tablicą obiektów, obiektem, który trzyma tę tablicę pod kluczem takim jak data, albo jednym obiektem na wiersz (NDJSON).
- Każdy klucz staje się kolumną. Obiekty i tablice wewnątrz wartości są zachowywane jako tekst JSON.
- Liczby zachowują dokładne cyfry, a daty ISO 8601 stają się datami lub znacznikami czasu.
Co warto wiedzieć o każdej bazie danych
- Wybierz bazę danych po otwarciu pliku: każda dostaje typy, które obsługuje.
Jak każdy rodzaj wartości jest zapisywany w każdej bazie danych
| Wartość | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Tak i nie | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Liczby całkowite | integer | int | int | INTEGER | int | NUMBER(10) |
| Duże liczby całkowite | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Liczby dziesiętne | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Liczby zmiennoprzecinkowe | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Daty | date | date | date | DATE | date | DATE |
| Godziny | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Daty z godziną | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Daty z godziną i przesunięciem | 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 |
Pytania o JSON do SQL
Nie ma tu odpowiedzi? Napisz do nas przez stronę kontaktu, a odpowie człowiek. Strona kontaktu
Jak przekonwertować JSON do SQL?
Upuść plik na konwerter u góry tej strony i wybierz bazę danych: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server lub Oracle. Każda dostaje typy, które obsługuje. Pobierz skrypt i uruchom go w swojej bazie.
Jaki kształt musi mieć plik JSON?
Tablica obiektów, obiekt zawierający taką tablicę pod kluczem, na przykład data, albo jeden obiekt w każdym wierszu (NDJSON). Każdy klucz staje się kolumną.
Jakich typów używa w każdej bazie danych?
Każda baza dostaje własne: wartości tak i nie to boolean w PostgreSQL, tinyint(1) w MySQL i MariaDB, bit w SQL Server i NUMBER(1) w Oracle. Tabela na tej stronie wymienia każdy rodzaj wartości.
Czy zachowuje zera wiodące?
Tak. Kod taki jak 000481 pozostaje tekstem w każdej bazie danych, zapisany jako '000481', więc żadne zero nie ginie.
Czy może załadować dane bez skryptu?
Tak. Wiersz poleceń za darmo ładuje do SQLite, a z IntoSQL Pro aplikacja na komputer i wiersz poleceń ładują do PostgreSQL, MySQL i MariaDB. Dla SQL Server i Oracle uruchom skrypt.
Jak duży może być plik JSON?
NDJSON, jeden obiekt w wierszu, jest odczytywany strumieniowo, więc w przeglądarce działają pliki o wielkości kilku gigabajtów. Dokument JSON jest odczytywany w całości, więc jego limitem jest pamięć, jaką przeglądarka daje tej stronie. Aplikacja na komputer i wiersz poleceń przyjmują pliki dowolnej wielkości.