4. diel - MS-SQL krok za krokom: Vývoz
V minulej lekcii, MS-SQL krok za krokom: Vkladanie a mazanie dát v tabuľke , sme si ukázali vkladanie a mazanie záznamov.
Dnes si MS-SQL tutoriálu vyskúšame vyexportovať našu databázu, čo sa nám bude určite mnohokrát hodiť.
Export (alebo tiež "záloha") je súbor s SQL príkazy, ktorý nám môže slúžiť na zálohu či migráciu databázy alebo len jej časti.
Export môžeme rozdeliť na:
- kompletný export - súbor bude obsahovať ako štruktúru tabuliek, tak i ich dáta
- export štruktúry - súbor bude obsahovať len štruktúru databázy taký export môže obsahovať všetky alebo len vybrané tabuľky
- taký export môže obsahovať všetky alebo len vybrané tabuľky
- export dát - súbor bude obsahovať len dáta tabuliek tabuľky môžeme špecifikovať
- tabuľky môžeme špecifikovať
Najprv musíme mať nejakú databázu s dátami, aby sme ich
mohli exportovať. Ak žiadnu z minulých lekcií nemáme, môžeme si databázu
aj tabuľku Uzivatele
vytvoriť podľa tejto lekcie. Ak
nemáme žiadne záznamy v tabuľke Uzivatele
, môžeme si znovu
pár záznamov do tabuľky Uzivatele
vložiť týmto T-SQL
príkazom:
INSERT INTO [Uzivatele] ( [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES ('Jan', 'Novák', '1984-11-03', 17), ('Tomáš', 'Marný', '1989-02-01', 6), ('Josef', 'Nový', '1972-12-20', 9);
Máme v databáze teda minimálne tri záznamy osôb:
Export dát
Skúsme si najprv exportovať dáta konkrétnej tabuľky. Najjednoduchšie to môžeme urobiť tak, že si otvoríme dáta tabuľky pomocou možnosti Show Table Data a potom klikneme buď na tlačidlo Script v hornej lište, alebo pravým tlačidlom myši do tabuľky a zvolíme Script:
Po kliknutí na tlačidlo Script sa nám vygeneruje tento T-SQL script v novom okne:
SET IDENTITY_INSERT [dbo].[Uzivatele] ON INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (1, N'Jan', N'Novák', N'1984-11-03', 17) INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (2, N'Tomáš', N'Marný', N'1989-02-01', 6) INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (3, N'Josef', N'Nový', N'1972-12-20', 9) SET IDENTITY_INSERT [dbo].[Uzivatele] OFF
Script najprv nastaví, aby bolo možné pri vkladaní záznamov určiť
hodnotu stĺpca Id
, ktorý má nastavenú
Identity specification
. Potom už nasledujú príkazy pre vloženie
všetkých záznamov. V prípade, že niektoré záznamy kopírovať nechceme,
tak ich príkazy môžeme zmazať.
Uloženie scriptu do súboru
Tento script si môžeme uložiť do súboru jednoducho kliknutím na tlačidlo pre uloženie súboru v hornom paneli, alebo klávesovou skratkou CTRL + S. Prípadne ho možno uložiť rovno pri vytváraní scriptu, kedy nekliknete na Script, ale na Script to File:
Script si uložíme niekam do súboru, pretože ho budeme využívať pre budúce import.:)
Export celej tabuľky
Ak chceme exportovať celú tabuľku, tzn. ako dáta, tak i štruktúru tabuľky, tak je postup trochu zložitejšie. Najprv si databázu otvoríme v okne SQL Server Object Explorer. V okne Server Explorer na databázu klikneme pravým a zvolíme Browse in SQL Server Object Explorer:
SQL Server Object Explorer je nástroj, ktorý rovnako ako Server Explorer umožňuje prácu s SQL databázami vo VS. Na rozdiel od neho však obsahuje nejaké funkcie navyše. Ak vám tieto funkcie nechýba, tak je jedno, ktorý z týchto nástrojov používate.
Tu keď klikneme na tabuľku pravým tlačidlom a zvolíme Script As, tak sa nám ponúknu tri možnosti:
- CREATE To - vygeneruje T-SQL script na vytvorenie tabuľky
- DROP To - vygeneruje T-SQL script na zmazanie tabuľky
- DROP And CREATE To - vygeneruje T-SQL script na zmazanie a následné znovuvytvorenie tabuľky
Všetky tieto možnosti ďalej potom ponúka:
- New Query Window - otvorí vygenerovaný script v novom okne
- Clipboard - vloží vygenerovaný script do schránky
- File - uloží vygenerovaný script do súboru
My zvolíme DROP And CREATE To a následne New Query Window:
Budeme mať takýto T-SQL script:
USE [DatabazeProWeb.MDF] GO /****** Object: Table [dbo].[Uzivatele] Script Date: 26.06.2021 15:48:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP TABLE [dbo].[Uzivatele]; GO CREATE TABLE [dbo].[Uzivatele] ( [Id] INT IDENTITY (1, 1) NOT NULL, [Jmeno] NVARCHAR (60) NOT NULL, [Prijmeni] NVARCHAR (60) NOT NULL, [DatumNarozeni] DATE NOT NULL, [PocetClanku] INT NOT NULL );
Tento script využijeme v situácii, keď chceme exportovať iba štruktúru tabuľky. Keďže my však chceme exportovať súčasne aj dáta, tak si ich import musíme doň vložiť. Vrátime sa ku scriptu z predchádzajúcej ukážky, celý ho skopírujeme (CTRL + C) a vložíme na koniec nového scriptu (CTRL + V):
USE [DatabazeProWeb.MDF] GO /****** Object: Table [dbo].[Uzivatele] Script Date: 26.06.2021 15:48:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP TABLE [dbo].[Uzivatele]; GO CREATE TABLE [dbo].[Uzivatele] ( [Id] INT IDENTITY (1, 1) NOT NULL, [Jmeno] NVARCHAR (60) NOT NULL, [Prijmeni] NVARCHAR (60) NOT NULL, [DatumNarozeni] DATE NOT NULL, [PocetClanku] INT NOT NULL ); SET IDENTITY_INSERT [dbo].[Uzivatele] ON INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (1, N'Jan', N'Novák', N'1984-11-03', 17) INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (2, N'Tomáš', N'Marný', N'1989-02-01', 6) INSERT INTO [dbo].[Uzivatele] ([Id], [Jmeno], [Prijmeni], [DatumNarozeni], [PocetClanku]) VALUES (3, N'Josef', N'Nový', N'1972-12-20', 9) SET IDENTITY_INSERT [dbo].[Uzivatele] OFF
Script teda definuje v akej databáze sa má tabuľka vytvoriť (predvolená je zdrojová databáza, pri importe ju prípadne musíme zmeniť), zmazanie rovnomennej tabuľky (ak existuje), vytvorenie novej tabuľky a vloženie dát.
Script si opäť uložíme niekam do súboru pre budúce import, napr. Pomocou CTRL + S.
Export celej databázy
Visual Studio umožňuje exportovať celú databázu ako tzv.
Data-tier application (DAC), ktorá sa prenáša v rámci
balíka DACPAC (súbor s príponou .dacpac
). V
podstate je to formát pre prenos celých MS-SQL databáz vrátane
štruktúr všetkých tabuliek a
dát v nich obsiahnutých. DAC sa okrem zálohy dá taktiež
použiť pre nasadenie databázy na vzdialený server alebo do Azure.
Balíček DACPAC vyexportuje tak, že klikneme na databázu pravým tlačidlom v SQL Server Object Explorer a zvolíme Extract Data-tier Application ...:
Otvorí sa nám tento dialóg:
V tomto dialógu najprv zvolíme umiestnenie a názov súboru, najjednoduchšie kliknutím na Browse .... Ďalej si môžeme zvoliť, či chceme vyexportovať iba štruktúru celej databázy (Extract schema only), alebo či chceme vyexportovať aj dáta (Extract schema and data). V prípade druhej možnosti si môžeme vybrať konkrétne tabuľky:
Export potvrdíme tlačidlom OK. Úspešnosť exportu sa vypíše v okne Data Tools Operations:
V budúcej lekcii, MS-SQL krok za krokom: Radenie, Limit a agregačné funkcie , sa pozrieme na radenie a agregačné funkcie.