4. diel - MS-SQL krok za krokom: Export
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 aj "záloha") je súbor s SQL príkazmi, 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 aj ich dáta,
- export štruktúry - súbor bude obsahovať iba štruktúru
databázy,
- takýto 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ť.
Najprv musíme mať nejakú databázu s dátami, aby sme ich
mohli exportovať. Pokiaľ žiadnu z minulých lekcií nemáme, môžeme si
databázu i tabuľku Users
vytvoriť podľa tejto lekcie. Ak
nemáme žiadne záznamy v tabuľke Users
, môžeme si znova pár
záznamov do tabuľky Users
vložiť týmto T-SQL príkazom:
INSERT INTO [Users] ( [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES ('John', 'Smith', '1984-11-03', 17), ('Thomas', 'Williams', '1989-02-01', 6), ('Joseph', 'Miller', '1972-12-20', 9);
Máme v databáze teda minimálne tri záznamy osôb:
Export dát
Skúsme si najskôr 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].[Users] ON INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (1, N'John', N'Smith', N'1984-11-03', 17) INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (2, N'Thomas', N'Williams', N'1989-02-01', 6) INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (3, N'Joseph', N'Miller', N'1972-12-20', 9) SET IDENTITY_INSERT [dbo].[Users] 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 na 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 na 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 neklikneme na Script, ale na Script to File:
Script si uložíme niekam do súboru, pretože ho budeme využívať na budúci import
Export celej tabuľky
Pokiaľ chceme exportovať celú tabuľku, tzn. ako dáta, tak aj štruktúru tabuľky, tak je postup trochu zložitejší. 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. Pokiaľ vám tieto funkcie nechýbajú, 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 [webDatabase.MDF] GO /****** Object: Table [dbo].[Users] Script Date: 03.07.2024 13:45:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP TABLE [dbo].[Users]; GO CREATE TABLE [dbo].[Users] ( [Id] INT IDENTITY (1, 1) NOT NULL, [FirstName] NVARCHAR (60) NULL, [LastName] NVARCHAR (60) NULL, [BirthDate] DATE NULL, [NumberOfArticles] INT 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 neho vložiť. Vrátime sa k scriptu z predchádzajúcej ukážky, celý ho skopírujeme (CTRL + C) a vložíme na koniec nového scriptu (CTRL + V):
USE [WEBDATABASE.MDF] GO /****** Object: Table [dbo].[Users] Script Date: 03.07.2024 13:45:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO DROP TABLE [dbo].[Users]; GO CREATE TABLE [dbo].[Users] ( [Id] INT IDENTITY (1, 1) NOT NULL, [FirstName] NVARCHAR (60) NULL, [LastName] NVARCHAR (60) NULL, [BirthDate] DATE NULL, [NumberOfArticles] INT NULL ); SET IDENTITY_INSERT [dbo].[Users] ON INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (1, N'John', N'Smith', N'1984-11-03', 17) INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (2, N'Thomas', N'Williams', N'1989-02-01', 6) INSERT INTO [dbo].[Users] ([Id], [FirstName], [LastName], [BirthDate], [NumberOfArticles]) VALUES (3, N'Joseph', N'Miller', N'1972-12-20', 9) SET IDENTITY_INSERT [dbo].[Users] 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úci 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 na 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ť na nasadenie databázy na vzdialený server alebo do Azure.
Balíček DACPAC vyexportujeme 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 ďalšej lekcii, MS-SQL krok za krokom: Import, si ukážeme import databázy.