BCP utilita – rychlý bulk import a export v SQL Server

BCP je utilita, která je defaultně nainstalována s edicemi SQL Server a slouží k hromadnému importu nebo exportu velkého objemu dat v uživatelsky definovaném formátu. Tato utilita je optimalizována pro velké přesuny dat buďto mezi instancemi SQL serveru nebo mezi SQL instancí a nějakým textovým souborem. Utilita se používá jak pro jednorázový import/export dat, tak pro pravidelné data loady v rámci ETL procesů.

Utilita se pouští přes příkazový řádek (cmd) a má svoji syntaxi.

Syntaxe BCP

Parametry utility si můžeme zobrazit jednoduše. Spustíme příkazovou řádku a napíšeme „bcp“. Výsledkem je seznam parametrů, které můžeme aplikovat. Mezi nejdůležitější argumenty bcp patří:

  • -S … název serveru (kam se připojujeme)
  • -U … uživatelské jméno (pod jakým loginem se připojujeme)
  • -P … heslo (heslo k loginu)
  • -d … databáze (databáze kam se připojujeme)
  • -n … nativní databázový formát dat

Syntaxe BCP

Syntaxe exportu dat: Export dat z tabulky do souboru

  • [database_name.] schema.table_name | view_name | out data_file | format nul} – v případě, že exportujeme celou tabulku
  • dotaz | queryout data_file | format nul} – v případě, že exportujeme celou tabulku

Syntaxe importu dat: Import dat do tabulky ze souboru

  • [database_name].schema.table_name | view_name | in data_file | format nul}

Příklad exportu/importu SQL dat pomocí BCP – bulk copy program

Na příkladu ukážeme, jak exportovat data z tabulky.

1) Příprava tabulky – nachystáme si jednoduchou tabulku o 2 sloupcích a naplníme ji daty. První sloupec je primární klíč a druhý sloupec je 4x zreplikovaný GUID. Druhý sloupec má tedy na každém řádku textový řetězec 148 znaků. Celkem generujeme 100 000 záznamů.

CREATE TABLE Temp.dbo.Test (ID INT IDENTITY(1,1) PRIMARY KEY,
Textove_pole VARCHAR(255)
)

DECLARE @Kursor INT=1
DECLARE @GUID UNIQUEIDENTIFIER

START_CYCLE:

    SET @GUID= NEWID()

    INSERT INTO Temp.dbo.Test (Textove_pole)
SELECT REPLICATE(CONCAT(CONVERT(VARCHAR(255),@GUID),‚-‚),4)

SET @Kursor=@Kursor+1

IF @Kursor <= 100000 GOTO START_CYCLE

2) Cílový adresář pro export dat bude: C:\Cilovy_folder_bcp

3) BCP příkaz: bude vypadat takto [Temp].[dbo].[Test] out „C:\Cilovy_folder_bcp\Temp_dbo_Test_2018_07_02.bcp“ -SSQL_INSTANCE -T -n

4) Výsledek: Hotovo. Alternativně provádíme import

Bcp výsledek v cmd

Více informací v dokumentaci Microsoftu k bulk copy program utilitě zde

_______________________________________________________________________________________________
Intelligent technologies - podniková řešení a školení
Stránkonoš.cz - webové stránky za rozumnou cenu
BCP utilita – rychlý bulk import a export v SQL Server
Hodnocení

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.