5. diel - SQLite - Export
V predchádzajúcom cvičení, Riešené úlohy k 1.-4. lekcii SQLite, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
V tomto SQLite tutoriáli si ukážeme, ako exportovať dáta našej databázy. Vytvorenie zálohy sa nám bude určite mnohokrát hodiť či už pre prípadné obnovenie našich dát alebo ich zdieľanie s ostatnými.
Export
Export (alebo tiež "záloha") je súbor s dátami, ktorý nám slúži ako záloha databázy, alebo ho potrebujeme na migráciu, či import databázy.
Export môžeme rozdeliť na:
- kompletný export - súbor bude obsahovať ako štruktúru tabuliek, tak aj ich dáta,
- export štruktúry - súbor bude obsahovať iba štruktúru
databázy,
- export môže obsahovať všetky alebo iba vybrané tabuľky,
- export dát - súbor bude obsahovať iba dáta tabuliek,
- tabuľky môžeme špecifikovať.
Pred vlastným exportom budeme potrebovať dáta, ktoré chceme exportovať.
Ak nám v tabuľke z minula žiadna nezostala, môžeme si vložiť dáta do
našej tabuľky users pomocou jazyka SQL:
INSERT INTO `users` ( `first_name`, `last_name`, `birth_date`, `article_count` ) VALUES ('John', 'Smith', '1984-11-03', 17), ('Thomas', 'Williams', '1942-10-17', 6), ('Joseph', 'Miller', '1958-07-10', 9);
Alebo si môžeme vložiť vlastné údaje. Pre potreby našej dnešnej lekcie na obsahu dát nezáleží.
Ako exportovať?
Exportovať databázu alebo tabuľku je veľmi jednoduché. Stačí kliknúť na File -> Export. Ďalej si môžeme vybrať z troch možností popísaných nižšie:

Export do súboru SQL
Pri voľbe tejto možnosti sa nám zobrazí tento dialóg:

Ako názov operácie napovedá, táto akcia sa nám bude hodiť, ak budeme
chcieť exportovať databázu do súboru .sql.
Výber tabuliek
Najprv musíme vybrať tabuľky, ktoré chceme exportovať. Je možné
(rovnako ako na obrázku), že bude v ponuke aj tabuľka
sqlite_sequence. Tú si vytvára SQLite samo, ak existuje tabuľka
so stĺpcom označeným ako AUTOINCREMENT. V tabuľke
sqlite_sequence je uložené posledné použité id.
Môžeme, ale nemusíme ju vybrať, pretože výsledný súbor to nijako
neovplyvní.
Možnosť príkazu INSERT
Ďalej máme možnosť zaškrtnúť Keep column names in INSERT
INTO. Súbor .sql je skupina príkazov pre RDBMS, ktoré sa
spúšťajú, a tým sa vytvárajú tabuľky a plnia sa dátami. Rozdiel v
príkaze bude nasledujúci:
Pri zaškrtnutí možnosti:
INSERT INTO "users" ("user_id","first_name","last_name", "birth_date", "article_count") VALUES (1, 'John', 'Smith', '1984-11-03', 17);
Pri NEzaškrtnutí možnosti:
INSERT INTO "users" VALUES (1, 'John', 'Smith', '1984-11-03', 17);
Vloženie viacerých
záznamov v príkaze INSERT
Voľba Multiple rows (VALUES) per INSERT statement buď použije
jeden INSERT, ktorý bude vkladať všetky záznamy, alebo (pri
nezaškrtnutí) sa každý jeden záznam bude vkladať vlastným príkazom
INSERT. Rovnako ako v predchádzajúcom prípade je ale výsledok
následného importu nášho budúceho súboru rovnaký. Ide iba o zmenu
syntaxe.
Obsah exportu
Ďalšia ponuka je rozbaľovacia a s možnosťami, čo chceme exportovať:
- Exportovať všetko.
- Exportovať iba schému.
- Exportovať iba dáta.
Súbor exportu sa môže deliť na schému a dáta:

Výberom jednej z možností volíme obsah následného súboru. Súbor môže obsahovať:
- schému aj dáta (ako na obrázku vyššie)
- schému, ktorá vytvorí prázdnu tabuľku
- dáta, ktoré sa vložia do už vytvorenej tabuľky
Existujúca tabuľka
Poslednou rozbaľovacou položkou volíme medzi možnosťami:
- Keep old schema (CREATE TABLE IF NOT EXISTS) – Dáta sa buď pripíšu do existujúcej tabuľky, alebo sa vytvorí nová tabuľka, do ktorej sa vložia exportované dáta.
- Overwrite old schema (DROP TABLE, then CREATE TABLE) – Existujúca tabuľka sa odstráni a vytvorí sa nová tabuľka, do ktorej sa vložia exportované dáta.
Export do CSV súboru
Súbor CSV - Comma Seperated Values je súbor, v ktorom sú dáta oddelené separátorom (napr. čiarkou). Je nielen ľudsky čitateľný, ale umožňuje uložené dáta importovať napríklad do Excelu.
Pri voľbe tejto možnosti sa nám zobrazí tento dialóg:

Najprv si vyberieme tabuľky, ktoré chceme exportovať.
Súbor CSV je ale jednoduchý, ako teda spozná, aké dáta patria akej
tabuľke? Odpoveď je: nespozná. Preto sa pre každú tabuľku
vytvorí jej vlastný .csv súbor.
Názvy stĺpcov v prvom riadku
Zaškrtnutím checkboxu Column names in first line sa exportujú aj názvy stĺpcov, ktoré sa zapíšu do CSV súboru rovnako ako dáta.
Oddeľovač poľa
V poli Field separator si vyberieme znak, ktorým budú jednotlivé dáta v rámci jedného záznamu (riadku) od seba oddelené. Môžeme vybrať vopred dané znaky, alebo zvoliť svoj vlastný pomocou voľby Other. Je tu aj možnosť Tab. Takýto súbor potom nemá stĺpce viditeľne oddelené žiadnym znakom, avšak programy typu Excel ho bez problémov dokážu aj tak správne prečítať.
Úvodzovka
Pokiaľ sa v dátach objaví rovnaký znak, aký je použitý ako oddeľovač
(napríklad čiarka vo vnútri textu, keď je čiarka súčasne nastavená ako
separátor), je potrebné tento konflikt vyriešiť. CSV to rieši tak, že
celé pole s takýmto obsahom uzavrie do úvodzoviek. V nastavení preto
nájdeme voľbu Quote character, kde si môžeme zvoliť, aký znak sa
má na tento účel použiť. V predvolenom nastavení je to dvojitá úvodzovka
("), môžeme však zvoliť aj apostrof (') alebo iný
znak.
Odriadkovanie
Operačné systémy používajú rôzne znaky na označenie nového riadka. V poslednom poli, New line characters exportného dialógu preto volíme spôsob, akým budú jednotlivé riadky (záznamy) v CSV súbore oddelené.
Export do formátu JSON
Formát JSON sa často využíva v JavaScripte a API webových aplikácií. Opäť máme možnosť vybrať, ktoré tabuľky sa exportujú.

Pri tomto type exportu máme potom iba zaškrtávacie pole Pretty print, čo je označenie pre úhľadné formátovanie textu za účelom zvýšenia jeho čitateľnosti.
S nevybranou voľbou Pretty print vyzerá výsledok takto:
[{"article_count": 17,"birth_date": "1984-11-03","first_name": "John","last_name": "Smith","user_id": 1},{"article_count": 6,"birth_date": "1942-10-17","first_name": "Thomas","last_name": "Williams","user_id": 2},{"article_count": 9,"birth_date": "1958-07-10","first_name": "Joseph","last_name": "Miller","user_id": 3}]
S vybranou voľbou Pretty print získame čitateľnejší výstup:
[
{
"article_count": 17,
"birth_date": "1984-11-03",
"first_name": "John",
"last_name": "Smith",
"user_id": 1
},
{
"article_count": 6,
"birth_date": "1942-10-17",
"first_name": "Thomas",
"last_name": "Williams",
"user_id": 2
},
{
"article_count": 9,
"birth_date": "1958-07-10",
"first_name": "Joseph",
"last_name": "Miller",
"user_id": 3
}
]
V ďalšej lekcii, SQLite - Import, si ukážeme import databázy.
