IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 4 - MS-SQL krok za krokem: Export

V minulé lekci, MS-SQL krok za krokem: Vkládání a mazání dat v tabulce, jsme si ukázali vkládání a mazání záznamů.

Dnes si MS-SQL tutoriálu vyzkoušíme vyexportovat naši databázi, což se nám bude jistě mnohokrát hodit.

Export (nebo také "záloha") je soubor s SQL příkazy, který nám může sloužit na zálohu či migraci databáze nebo jen její části.

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
    • takový export může obsahovat všechny nebo pouze vybrané tabulky
  • export dat - soubor bude obsahovat pouze data tabulek
    • tabulky můžeme specifikovat

Nejprve musíme mít nějakou databázi s daty, abychom je mohli exportovat. Pokud žádnou z minulých lekcí nemáme, můžeme si databázi i tabulku Uzivatele vytvořit podle této lekce. Pokud nemáme žádné záznamy v tabulce Uzivatele, můžeme si znovu pár záznamů do tabulky Uzivatele vložit tímto T-SQL příkazem:

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ázi tedy minimálně tři záznamy osob:

Tabulka s daty - MS-SQL databáze krok za krokem

Export dat

Zkusme si nejprve exportovat data konkrétní tabulky. Nejjednodušeji to můžeme udělat tak, že si otevřeme data tabulky pomocí možnosti Show Table Data a poté klikneme buď na tlačítko Script v horní liště, anebo pravým tlačítkem myši do tabulky a zvolíme Script:

Script - MS-SQL databáze krok za krokem

Po kliknutí na tlačítko Script se nám vygeneruje tento T-SQL script v novém okně:

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 nejprve nastaví, aby bylo možné při vkládání záznamů určit hodnotu sloupce Id, který má nastavenou Identity specification. Poté už následují příkazy pro vložení všech záznamů. V případě, že některé záznamy kopírovat nechceme, tak jejich příkazy můžeme smazat.

Uložení scriptu do souboru

Tento script si můžeme uložit do souboru jednoduše kliknutím na tlačítko pro uložení souboru v horním panelu, nebo klávesovou zkratkou CTRL + S. Případně ho lze uložit rovnou při vytváření scriptu, kdy neklikneme na Script, ale na Script to File:

Script to File - MS-SQL databáze krok za krokem

Script si uložíme někam do souboru, protože jej budeme využívat pro budoucí import. :)

Export celé tabulky

Pokud chceme exportovat celou tabulku, tzn. jak data, tak i strukturu tabulky, tak je postup trochu složitější. Nejprve si databázi otevřeme v okně SQL Server Object Explorer. V okně Server Explorer na databázi klikneme pravým a zvolíme Browse in SQL Server Object Explorer:

Browse in SQL Server Object Explorer - MS-SQL databáze krok za krokem

SQL Server Object Explorer je nástroj, který stejně jako Server Explorer umožňuje práci s SQL databázemi ve VS. Na rozdíl od něj však obsahuje nějaké funkce navíc. Pokud vám tyto funkce nechybí, tak je jedno, který z těchto nástrojů používáte.

Zde když klikneme na tabulku pravým tlačítkem a zvolíme Script As, tak se nám nabídnou tři možnosti:

  • CREATE To - vygeneruje T-SQL script na vytvoření tabulky
  • DROP To - vygeneruje T-SQL script na smazání tabulky
  • DROP And CREATE To - vygeneruje T-SQL script na smazání a následné znovuvytvoření tabulky

Všechny tyto možnosti dále pak nabízí:

  • New Query Window - otevře vygenerovaný script v novém okně
  • Clipboard - vloží vygenerovaný script do schránky
  • File - uloží vygenerovaný script do souboru

My zvolíme DROP And CREATE To a následně New Query Window:

DROP AND CREATE To - MS-SQL databáze krok za krokem

Budeme mít takový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 situaci, kdy chceme exportovat pouze strukturu tabulky. Jelikož my však chceme exportovat současně i data, tak si jejich import musíme do něj vložit. Vrátíme se ke scriptu z předchozí ukázky, celý ho zkopírujeme (CTRL + C) a vložíme na konec 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 tedy definuje v jaké databázi se má tabulka vytvořit (výchozí je zdrojová databáze, při importu ji případně musíme změnit), smazání stejnojmenné tabulky (pokud existuje), vytvoření nové tabulky a vložení dat.

Script si opět uložíme někam do souboru pro budoucí import, např. pomocí CTRL + S.

Export celé databáze

Visual Studio umožňuje exportovat celou databázi jako tzv. data-tier application (DAC), která se přenáší v rámci balíčku DACPAC (soubor s příponou .dacpac). V podstatě je to formát pro přenos celých MS-SQL databází včetně struktur všech tabulek a dat v nich obsažených. DAC se kromě zálohy dá taktéž použít pro nasazení databáze na vzdálený server nebo do Azure.

Balíček DACPAC vyexportujeme tak, že klikneme na databázi pravým tlačítkem v SQL Server Object Explorer a zvolíme Extract Data-tier Application...:

Extract Data-tier Application… - MS-SQL databáze krok za krokem

Otevře se nám tento dialog:

Extract Data-tier Application dialog - MS-SQL databáze krok za krokem

V tomto dialogu nejprve zvolíme umístění a název souboru, nejjednodušeji kliknutím na Browse.... Dále si můžeme zvolit, jestli chceme vyexportovat pouze strukturu celé databáze (Extract schema only), nebo jestli chceme vyexportovat i data (Extract schema and data). V případě druhé možnosti si můžeme vybrat konkrétní tabulky:

Extract Data dialog - MS-SQL databáze krok za krokem

Export potvrdíme tlačítkem OK. Úspěšnost exportu se vypíše v okně Data Tools Operations:

Data Tools Operations - MS-SQL databáze krok za krokem

V další lekci, MS-SQL krok za krokem: Import, si ukážeme import databáze.


 

Předchozí článek
MS-SQL krok za krokem: Vkládání a mazání dat v tabulce
Všechny články v sekci
MS-SQL databáze krok za krokem
Přeskočit článek
(nedoporučujeme)
MS-SQL krok za krokem: Import
Článek pro vás napsal Radek Vymětalík
Avatar
Uživatelské hodnocení:
317 hlasů
...
Aktivity