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

Poslední aktualizace:

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 na základě dotazu

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

BCP utilita – rychlý bulk import a export v SQL Server
5 (100%) 3 vote[s]

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: SQL Administrace Užitečné SQL skripty

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

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