Skip to content

Kreiranje baze iz XML-a ili JSON-a ​

Alati → Kreiraj bazu iz XML-a / JSON-a uzima XML ili JSON dokument, razabire relacijsku strukturu skrivenu u njemu i iz toga gradi bazu — tablice, stupce, tipove, veze i podatke.

Ovo je za slučaj kad vam sustav preda veliki izvoz — katalog proizvoda, medicinski ili farmaceutski skup podataka, izvoz iz API-ja, partnersku datoteku — a vi to želite kao pravu bazu, a ne kao datoteku.

Prihvaćaju se četiri formata: .xml, .json te JSON po recima kao .jsonl ili .ndjson. Format se bira po ekstenziji; sve nakon početne analize je zajedničko, pa se pregled, generirani DDL i učitavanje ponašaju jednako s kojim god ste krenuli.

Tri koraka ​

1. Postavljanje ​

  • XML / JSON datoteka — odaberite dokument.
  • Ciljna konekcija — gdje će baza biti stvorena.
  • Ciljna baza — naziv baze. Za SQLite je to datoteka baze te konekcije.

2. Pregled ​

NabuSQL analizira dokument i prikazuje što je našao: tablice koje će stvoriti, njihove stupce i zaključene tipove. Generirani DDL može se pregledati prije nego išta krene.

Ovaj korak čitajte pažljivo. Tu doznajete da je polje koje ste očekivali kao numeričko zaključeno kao tekst jer jedan zapis od pedeset tisuća sadrži zalutali znak.

3. Izvršavanje ​

Uvoz teče uz prikaz napretka po tablici. Na kraju dobivate rezultat po tablici: koliko je redaka učitano i eventualne greške.

Kako se izvodi struktura ​

Iz XML-a ​

Elementi koji se ponavljaju postaju tablice. Atributi i tekst elementa postaju stupci. Element koji se unutar roditelja pojavi samo jednom stapa se u roditelja kao stupci s prefiksom — blok <meta><author>…</author></meta> postaje stupac meta_author, a ne zasebna tablica s jednim retkom.

Iz JSON-a ​

Ista zamisao, izrečena rječnikom JSON-a:

U dokumentuU bazi
Ključ sa skalaromStupac na tablici tog objekta
Ključ s objektomStapa se u roditelja kao stupci s prefiksom
Ključ s nizomPodređena tablica sa stranim ključem na roditelja
Goli skalar u nizuStupac _text te tablice

JSON jednu stvar kaže jasnije nego što XML može: niz znači „više" i kad ova konkretna datoteka sadrži samo jedan element, pa postaje tablica bez obzira na duljinu. XML isto mora zaključivati iz ponavljanja oznake, što znači da jednokratni podelement izgleda identično kao zbirka koja slučajno ima jednog člana.

Niz na najvišoj razini tretira se kao popis korijenskih zapisa. Objekt na najvišoj razini je jedan korijenski zapis. Kod .jsonl / .ndjson svaki je redak jedan korijenski zapis, a prazni se preskaču.

Kako JSON nema korijensku oznaku po kojoj bi se stvari imenovale, naziv korijenske tablice daje ime datoteke — catalog.json daje tablicu catalog.

Kako radi ​

Tri stvari iz izvedbe imaju praktične posljedice:

  • Raščlamba u dva prolaza. Prvi prolaz utvrđuje strukturu, drugi učitava podatke.
  • Memorija. XML i JSON po recima streamaju se, pa je veličina datoteke ograničena diskom, a ne radnom memorijom. Obična .json datoteka je jedna JSON vrijednost i mora se raščlaniti u cijelosti, pa je vrlo velika ograničena memorijom. Ako kontrolirate izvoz, tražite .ndjson.
  • Strani ključevi postavljaju se nakon učitavanja podataka. Zapisi su često poredani tako da dijete stigne prije roditelja; stvaranje ograničenja unaprijed odbilo bi posve ispravne retke. Ograničenja se dodaju na kraju, kad je svaki redak na mjestu.

Nakon toga ​

  • Provjerite zaključene tipove u Tablice i stupci i suzite ono što je ispalo šire nego treba.
  • Otvorite ER dijagram da vidite izvedenu strukturu.
  • Dodajte indekse za stupce po kojima ćete stvarno pretraživati — uvoz stvara ključeve i ograničenja, ne indekse koje traže vaši izvještaji.

Ako tablica ispadne krivo ​

Struktura prati dokument. Kad je polje nedosljedno kroz zapise, analiza proširuje tip tako da primi svaku viđenu vrijednost. Popravak nakon učitavanja — jedan ALTER TABLE nad poznatim podacima — obično je brži od preoblikovanja izvorne datoteke.

Logičke vrijednosti često iznenade: JSON-ovi true / false spremaju se kao 1 / 0, pa stupac ispadne cjelobrojan, a ne tekstualan.