Pouze tento týden sleva až 80% na e-learning týkající se Kotlinu
Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
Kotlin week

Lekce 4 - MS-SQL krok za krokem: Export Nové

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

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

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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

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

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

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

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…

Otevře se nám tento dialog:

Extract Data-tier Application dialog

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

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

Data Tools Operations

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
Článek pro vás napsal Radek Vymětalík
Avatar
Jak se ti líbí článek?
1 hlasů
...
Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!