Lekce 5 - SQLite - Export
V předešlém cvičení, Řešené úlohy k 1.-4. lekci SQLite, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
V tomto SQLite tutoriálu si ukážeme, jak exportovat data naší databáze. Vytvoření zálohy se nám bude jistě mnohokrát hodit ať už pro případné obnovení našich dat nebo jejich sdílení s ostatními.
Export
Export (nebo také "záloha") je soubor s daty, který nám slouží jako záloha databáze, nebo ho potřebujeme pro migraci, či import databáze.
Export můžeme rozdělit na:
- kompletní export - soubor bude obsahovat jak strukturu tabulek, tak i jejich data,
- export struktury - soubor bude obsahovat pouze strukturu
databáze,
- export může obsahovat všechny nebo pouze vybrané tabulky,
- export dat - soubor bude obsahovat pouze data tabulek,
- tabulky můžeme specifikovat.
Před vlastním exportem budeme potřebovat data, která chceme exportovat.
Pokud nám v tabulce z minula žádná nezbyla, můžeme si vložit data do
naší tabulky uzivatele
pomocí jazyka SQL:
INSERT INTO `uzivatele` ( `jmeno`, `prijmeni`, `datum_narozeni`, `pocet_clanku` ) VALUES ('Jan', 'Novák', '1984-11-03', 17), ('Tomáš', 'Marný', '1989-02-01', 6), ('Josef', 'Nový', '1972-12-20', 9);
Nebo si můžeme vložit vlastní data. Pro potřeby naší dnešní lekce na obsahu dat nezáleží.
Jak exportovat?
Exportovat databázi nebo tabulku je velmi jednoduché. Stačí kliknout na File -> Export. Dále si můžeme vybrat ze tří možností popsaných níže:

Export do souboru SQL
Při volbě této možnosti se nám zobrazí tento dialog:

Jak název operace napovídá, tato akce se nám bude hodit, pokud budeme
chtít exportovat databázi do souboru .sql
.
Výběr tabulek
Nejprve musíme vybrat tabulky, které chceme exportovat. Je možné (stejně
jako na obrázku), že bude v nabídce i tabulka sqlite_sequence
.
Tu si vytváří SQLite samo, pokud existuje tabulka se sloupcem označeným
jako AUTOINCREMENT
. V tabulce sqlite_sequence
je
uloženo poslední použité id
. Můžeme, ale nemusíme ji vybrat,
neboť výsledný soubor to nijak neovlivní.
Možnosti příkazu INSERT
Dále máme možnost Keep column names in INSERT INTO. Soubor
.sql
je skupina příkazů pro RDBMS, které se spouští, a tím
se vytváří tabulky a plní se daty. Rozdíl v příkazu bude
následující:
Při zaškrtnutí možnosti:
INSERT INTO "uzivatele" ("uzivatele_id", "jmeno", "prijmeni", "datum_narozeni", "pocet_clanku") VALUES (1,'Jan','Novák','1984-11-03','17');
Při NEzaškrtnutí možnosti:
INSERT INTO "uzivatele" VALUES (1,'Jan','Novák','1984-11-03','17');
Vložení více záznamů v
příkazu INSERT
Volba Multiple rows (VALUES) per INSERT statement buď použije
jeden INSERT
, který bude vkládat všechny záznamy, nebo (při
nezaškrtnutí) se každý jeden záznam bude vkládat vlastním příkazem
INSERT
. Stejně jako v předchozím případě je ale výsledek
následného importu našeho budoucího souboru stejný. Jedná se pouze o
změnu syntaxe.
Obsah exportu
Další nabídka je rozbalovací s možnostmi, co chceme exportovat:
- Exportovat vše
- Exportovat pouze schéma
- Exportovat pouze data
Soubor exportu se může dělit na schéma a data:

Výběrem jedné z možností volíme obsah následného souboru. Soubor může obsahovat:
- schéma i data (jako na obrázku výše)
- schéma, které vytvoří prázdnou tabulku
- data, která se vloží do již vytvořené tabulky
Existující tabulka
Poslední rozbalovací položkou volíme mezi možnostmi:
- Keep old schema (CREATE TABLE IF NOT EXISTS) – Data se buď připíšou do existující tabulky, nebo se vytvoří nová tabulka, do které se vloží exportovaná data.
- Overwrite old schema (DROP TABLE, then CREATE TABLE) – Existující tabulka se odstraní a vytvoří se nová tabulka, do které se vloží exportovaná data.
Export do CSV souboru
Soubor CSV - Comma Seperated Values je soubor, ve kterém jsou data oddělena separátorem (např. čárkou). Je nejen lidsky čitelný, ale umožnuje uložená data importovat například do Excelu.
Při volbě této možnosti se nám zobrazí tento dialog:

Nejprve si vybereme tabulky, které chceme exportovat.
Soubor CSV je ale jednoduchý, jak tedy pozná, jaká data patří jaké
tabulce? Odpověď je: nepozná. Proto se pro každou tabulku
vytvoří její vlastní .csv
soubor.
Názvy sloupců v prvním řádku
Zaškrtnutím checkboxu Column names in first line se exportují i názvy sloupců, které se zapíšou do CSV souboru stejně jako data.
Oddělovač pole
V poli Field separator si vybereme znak, kterým budou jednotlivá data v rámci jednoho záznamu (řádku) od sebe oddělena. Můžeme vybrat předem dané znaky, nebo zvolit svůj vlastní pomocí volby Other. Je zde i možnost Tab. Takový soubor potom nemá sloupce viditelně oddělené žádným znakem, nicméně programy typu Excel ho bez problému dokážou i tak správně přečíst.
Uvozovka
Pokud se v datech objeví stejný znak, jaký je použit jako oddělovač
(například čárka uvnitř textu, když je čárka současně nastavená jako
separátor), je potřeba tento konflikt vyřešit. CSV to řeší tak, že celé
pole s takovým obsahem uzavře do uvozovek. V nastavení proto najdeme volbu
Quote character, kde si můžeme zvolit, jaký znak se má k tomuto
účelu použít. Ve výchozím nastavení je to dvojitá uvozovka
("
), můžeme však zvolit i apostrof ('
) nebo jiný
znak.
Odřádkování
Operační systémy používají různé znaky pro označení nového řádku. V posledním poli, New line characters exportního dialogu proto volíme způsob, jakým budou jednotlivé řádky (záznamy) v CSV souboru odděleny.
Export do formátu JSON
Formát JSON se často využívá v JavaScriptu a API webových aplikací. Opět máme možnost vybrat, které tabulky se exportují.

U tohoto typu exportu pak máme pouze zaškrtávací pole Pretty print, což je označení pro úhledné formátování textu za účelem zvýšení jeho čitelnosti.
S nevybranou volbou Pretty print vypadá výsledek takto:

S vybranou volbou Pretty print získáme čitelnější výstup:

V další lekci, SQLite - Import, si ukážeme import databáze.