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

5/5 - (4 votes)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *