Sdílet prostřednictvím


nástroj bcp

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Nástroj programu hromadného kopírování (bcp) hromadně kopíruje data mezi instancí Microsoft SQL Serveru a datovým souborem v uživatelském formátu.

Informace o použití bcp v Linuxu najdete v tématu Instalace nástrojů příkazového řádku SQL Serveru sqlcmd a bcp v Linuxu. Podrobné informace o používání bcp s Azure Synapse Analytics najdete v tématu Načtení dat pomocí nástroje bcp.

Nástroj bcp lze použít k importu velkého počtu nových řádků do tabulek SQL Serveru nebo k exportu dat z tabulek do datových souborů. Kromě použití s možností queryout nástroj nevyžaduje žádné znalosti jazyka Transact-SQL. Pokud chcete importovat data do tabulky, musíte použít formátový soubor vytvořený pro danou tabulku nebo porozumět struktuře tabulky a typům dat, která jsou platná pro jeho sloupce.

Poznámka

Pokud k zálohování dat použijete bcp, vytvořte formátový soubor pro záznam formátu dat. datových souborů neobsahují žádné informace o schématu ani formátu, takže pokud dojde k vyřazení tabulky nebo zobrazení a nemáte formátový soubor, možná nebudete moct data importovat.

Pro konvence syntaxe, které jsou používány pro syntaxi bcp, se podívejte naTransact-SQL konvence syntaxe.

Stáhněte si nejnovější verzi nástroje bcp.

Nástroje příkazového řádku jsou ve stavu všeobecné dostupnosti (GA), nicméně jsou vydávány s instalačním balíčkem pro SQL Server 2019 (15.x) a novější verze.

Windows

Linux a macOS

Pokyny k instalaci sqlcmd a bcp v Linuxu najdete v tématu Instalace nástrojů příkazového řádku SQL Serveru sqlcmd a bcp v Linuxu a macOS.

Informace o verzi

  • Číslo vydání: 15.0.4298.1
  • Číslo buildu: 15.0.4298.1
  • Datum vydání: 7. dubna 2023

bcp podporuje ověřování Microsoft Entra, včetně podpory vícefaktorového ověřování (MFA) pro Azure SQL Database, databázi SQL v Microsoft Fabric a Azure Synapse Analytics.

Poznámka

Microsoft Entra ID se dříve označovala jako Azure Active Directory (Azure AD).

Požadavky na systém

  • Windows 8, Windows 8.1, Windows 10, Windows 11

  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Tato komponenta vyžaduje nejnovější ovladač Microsoft ODBC 17 pro SQL Server.

Pokud chcete zkontrolovat verzi bcp, spusťte příkaz bcp -v a ověřte, že se používá verze 15.0.4298.1 nebo novější.

Poznámka

sqlcmd a bcp jsou k dispozici také v Linuxu. Další informace naleznete v tématu Instalace nástrojů příkazového řádku SQL Serveru sqlcmd a bcp v Linux.

Syntax

bcp [database_name.] schema.{table_name | view_name | "query"}
    {in data_file | out data_file | queryout data_file | format nul}
                                                                                                         
    [-a packet_size]
    [-b batch_size]
    [-c]
    [-C { ACP | OEM | RAW | code_page } ]
    [-d database_name]
    [-D]
    [-e err_file]
    [-E]
    [-f format_file]
    [-F first_row]
    [-G Azure Active Directory Authentication]
    [-h"hint [,...n]"]
    [-i input_file]
    [-k]
    [-K application_intent]
    [-l login_timeout]
    [-L last_row]
    [-m max_errors]
    [-n]
    [-N]
    [-o output_file]
    [-P password]
    [-q]
    [-r row_term]
    [-R]
    [-S [server_name[\instance_name]]]
    [-t field_term]
    [-T]
    [-U login_id]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ]
    [-w]
    [-x]

Možnosti příkazového řádku

název_databáze

Název databáze, ve které se nachází zadaná tabulka nebo zobrazení. Pokud není zadáno, jedná se o výchozí databázi uživatele.

Můžete také explicitně zadat název databáze pomocí -d.

schéma

Jméno vlastníka tabulky nebo zobrazení. schéma je volitelné, pokud uživatel provádějící operaci vlastní zadanou tabulku nebo zobrazení. Pokud schéma není zadáno a uživatel provádějící operaci nevlastní zadanou tabulku nebo zobrazení, sql Server vrátí chybovou zprávu a operace se zruší.

název_tabulky

Název cílové tabulky při importu dat do SQL Serveru (in) a zdrojové tabulky při exportu dat z SQL Serveru (out).

název pohledu

Název cílového zobrazení při kopírování dat do SQL Serveru (in) a zdrojového zobrazení při kopírování dat z SQL Serveru (out). Jako cílová zobrazení lze použít pouze zobrazení, ve kterých všechny sloupce odkazují na stejnou tabulku. Další informace o omezeních kopírování dat do zobrazení najdete v sekci INSERT.

dotaz

Dotaz Transact-SQL, který vrátí sadu výsledků. Pokud dotaz vrátí více sad výsledků, zkopíruje se do datového souboru pouze první sada výsledků; následující sady výsledků jsou ignorovány. Kolem dotazu použijte dvojité uvozovky a jednoduché uvozovky kolem všeho, co je v dotazu vložené. queryout musí být také zadán při hromadném kopírování dat z dotazu.

Dotaz může odkazovat na uloženou proceduru, pokud existují všechny tabulky odkazované uvnitř uložené procedury před provedením příkazu bcp. Pokud například uložená procedura generuje dočasnou tabulku, příkaz bcp selže, protože dočasná tabulka je k dispozici pouze za běhu a ne v době provádění příkazu. V takovém případě zvažte vložení výsledků uložené procedury do tabulky a následné použití bcp ke zkopírování dat z tabulky do datového souboru.

v

Zkopíruje ze souboru do databázové tabulky nebo zobrazení. Určuje směr hromadného kopírování.

ven

Zkopíruje databázovou tabulku nebo zobrazení do souboru. Určuje směr hromadného kopírování.

Pokud zadáte existující soubor, soubor se přepíše. Při extrahování dat zobrazuje nástroj bcp prázdný řetězec jako "null" a řetězec "null" jako prázdný řetězec.

datový soubor

Úplná cesta k datovému souboru. Při hromadném importu dat do SQL Serveru obsahuje datový soubor data, která se mají zkopírovat do zadané tabulky nebo zobrazení. Při hromadném exportu dat z SQL Serveru obsahuje datový soubor data zkopírovaná z tabulky nebo zobrazení. Cesta může mít 1 až 255 znaků. Datový soubor může obsahovat maximálně 2^63 – 1 řádky.

dotazování

Kopírování z dotazu musí být specifikováno pouze při hromadném kopírování dat z dotazu.

formát

Vytvoří formátový soubor na základě zadané možnosti (-n, -c, -wnebo -N) a oddělovačů tabulky nebo zobrazení. Při hromadném kopírování dat může příkaz bcp odkazovat na formátový soubor, který vás zbaví nutnosti interaktivně zadávat informace o formátu. Možnost format vyžaduje možnost -f; vytvoření souboru formátu XML vyžaduje také možnost -x. Další informace naleznete v tématu Vytvoření souboru formátu (SQL Server). Je nutné zadat nul jako hodnotu (format nul).

-a packet_size

Určuje počet bajtů na síťový paket, odeslaný na server a ze serveru. Možnost konfigurace serveru lze nastavit pomocí aplikace SQL Server Management Studio (nebo uložené procedury systému sp_configure). Možnost konfigurace serveru je však možné přepsat jednotlivě pomocí této možnosti. packet_size může být od 4 096 bajtů do 65 535 bajtů; výchozí hodnota je 4096.

Zvýšená velikost paketů může zvýšit výkon operací hromadného kopírování. Pokud se požaduje větší paket, ale nedá se mu udělit, použije se výchozí hodnota. Statistika výkonu vygenerovaná nástrojem bcp zobrazuje použitou velikost paketu.

-b batch_size

Určuje počet řádků na dávku importovaných dat. Každá dávka se naimportuje a zaprotokoluje jako samostatná transakce, která před potvrzením importuje celou dávku. Ve výchozím nastavení se všechny řádky v datovém souboru importují jako jedna dávka. Chcete-li distribuovat řádky mezi více dávek, zadejte batch_size, která je menší než počet řádků v datovém souboru. Pokud transakce pro libovolnou dávku selže, zruší se pouze vložení z aktuální dávky. Dávky, které jsou již importovány potvrzenými transakcemi, nejsou ovlivněny pozdějším selháním.

Tuto možnost nepoužívejte s možností -h "ROWS_PER_BATCH=<bb>".

-c

Provádí operaci používající datový typ znaku. Tato možnost nezobrazí výzvu pro každé pole; používá znak jako typ úložiště, bez předpon a s \t (znak tabulátoru) jako oddělovačem polí a \r\n (znak nového řádku) jako ukončovacím znakem řádku. -c není kompatibilní s -w.

Další informace naleznete v tématu Použití formátu znaků k importu nebo exportu dat (SQL Server).

-C { ACP | OEM | RAW | code_page }

Určuje znakovou stránku dat v datovém souboru. code_page je relevantní pouze v případě, že data obsahují char, varcharnebo text sloupce s hodnotami většími než 127 nebo menšími než 32.

Poznámka

Doporučujeme zadat název kolace pro každý sloupec ve formátu souboru, s výjimkou případů, kdy chcete, aby možnost 65001 měla prioritu oproti specifikaci kolace nebo znakové stránky.

Hodnota kódové stránky Popis
ACP ANSI/Microsoft Windows (ISO 1252).
Výrobce OEM Výchozí znaková stránka používaná klientem Toto je výchozí znaková stránka používaná, pokud není zadána -C.
NEZPRACOVANÝ Nedojde k žádnému převodu z jedné znakové stránky na jinou. Jedná se o nejrychlejší možnost, protože nedojde k žádnému převodu.
strana_kódu Konkrétní kódovou stránku; například 850.

Verze před verzí 13 (SQL Server 2016 (13.x)) nepodporují kódovou stránku 65001 (kódování UTF-8). Verze začínající verzí 13 můžou importovat kódování UTF-8 do starších verzí SQL Serveru.

-d database_name

Určuje databázi, ke které se má připojit. Ve výchozím nastavení se bcp připojí k výchozí databázi uživatele. Pokud jsou specifikovány -d <database_name> a tříčástný název (database_name.schema.table, předaný jako první parametr pro bcp), dojde k chybě, protože nelze zadat název databáze dvakrát. Pokud database_name začíná spojovníkem (-) nebo lomítkem (/), nepřidávejte mezeru mezi -d a názvem databáze.

-D

Způsobí, že se hodnota předaná bcp -S možnosti interpretuje jako název zdroje dat (DSN). DsN lze použít k vložení možností ovladače ke zjednodušení příkazového řádku, vynucení možností ovladače, které nejsou jinak přístupné z příkazového řádku, jako je Například MultiSubnetFailover, nebo k ochraně citlivých přihlašovacích údajů před zjistitelnými jako argumenty příkazového řádku. Další informace naleznete v tématu PODPORA DSN v nástroji sqlcmd a bcp v Připojení pomocí sqlcmd.

-e err_file

Určuje úplnou cestu k souboru chyby použitému k uložení všech řádků, které nástroj bcp nemůže přenést ze souboru do databáze. Chybové zprávy z příkazu bcp jsou zasílány na pracovní stanici uživatele. Pokud se tato možnost nepoužívá, nevytvořil se chybový soubor.

Pokud err_file začíná spojovníkem (-) nebo lomítkem (/), nezahrnujte mezeru mezi -e a hodnotou err_file.

-E

Určuje, že hodnota identity nebo hodnoty v importovaném datovém souboru se použijí pro sloupec identity. Pokud -E není zadaný, hodnoty identity pro tento sloupec v importovaném datovém souboru se ignorují a SQL Server automaticky přiřadí jedinečné hodnoty na základě počátečních a přírůstkových hodnot zadaných během vytváření tabulky. Další informace naleznete v tématu DBCC CHECKIDENT.

Pokud datový soubor neobsahuje hodnoty sloupce identity v tabulce nebo zobrazení, použijte formátový soubor k určení, že sloupec identity v tabulce nebo zobrazení by se měl při importu dat přeskočit; SQL Server automaticky přiřadí jedinečné hodnoty pro sloupec.

Možnost -E má zvláštní požadavek na oprávnění. Další informace najdete v části "Poznámky" dále v tomto článku.

-f format_file

Určuje úplnou cestu k souboru formátu. Význam této možnosti závisí na prostředí, ve kterém se používá, následujícím způsobem:

  • Pokud -f použijete s možností format, vytvoří se zadaný format_file pro zadanou tabulku nebo zobrazení. Chcete-li vytvořit soubor formátu XML, zadejte také možnost -x. Další informace naleznete v tématu Vytvoření souboru formátu (SQL Server).

  • Pokud se používá s možností in nebo out, -f vyžaduje existující formátový soubor.

    Poznámka

    Použití formátu souboru s možností in nebo out je volitelné. Pokud není zadána možnost -f, a není zadána -n, -c, -w, nebo -N, příkaz si vyžádá informace o formátu a umožní uložit vaše odpovědi do souboru s formátem (jehož výchozí název souboru je bcp.fmt).

Pokud format_file začíná pomlčkou (-) nebo lomítkem (/), nezahrnujte mezeru mezi -f a hodnotou format_file.

-F první_řádek

Určuje počet prvního řádku, který se má exportovat z tabulky nebo importovat z datového souboru. Tento parametr vyžaduje hodnotu větší než (>) 0, ale menší než (<) nebo rovno (=) celkový počet řádků. Bez tohoto parametru je výchozím řádkem souboru první řádek.

first_row může být kladné celé číslo s hodnotou až 2^63-1. -F first_row je založen na počítání od 1.

-G

platí pouze pro: Azure SQL Database, databáze SQL v Microsoft Fabric a Azure Synapse Analytics.

Tento přepínač používá klient k určení, že se uživatel ověřuje pomocí Microsoft Entra ID. Přepínač -G vyžaduje verze 14.0.3008.27 nebo novější. Pokud chcete zjistit verzi, spusťte bcp -v. Další informace najdete v tématu Použití ověřování Microsoft Entra se službou SQL Database nebo Azure Synapse Analytics nebo ověřování pro databázi SQL ve Fabricu.

Důležitý

Interaktivní ověřování Microsoft Entra není v současné době podporováno v Linuxu nebo macOS. Integrované ověřování Microsoft Entra vyžaduje ovladač Microsoft ODBC 17 pro SQL Server verze 17.6.1 a novější verze a správně nakonfigurované prostředí Kerberos.

Spropitné

Pokud chcete zkontrolovat, jestli vaše verze bcp zahrnuje podporu ověřování Microsoft Entra, zadejte bcp --help a ověřte, že se v seznamu dostupných argumentů zobrazují -G.

  • uživatelské jméno a heslo Microsoft Entra

    Pokud chcete použít uživatelské jméno a heslo Microsoft Entra, můžete zadat možnost -G a také zadat možnosti -U a -P.

    Následující příklad exportuje data pomocí uživatelského jména a hesla Microsoft Entra. Příklad exportuje tabulku bcptest z databáze testdb ze serveru Azure aadserver.database.windows.net a uloží data do souboru c:\last\data1.dat:

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    

    Následující příklad importuje data pomocí přihlašovacích údajů uživatele Microsoft Entra. Příklad importuje data ze souboru c:\last\data1.dat do tabulky bcptest pro databázové testdb na serveru Azure aadserver.database.windows.net pomocí uživatelského jména a hesla Microsoft Entra:

    bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    
  • integrované Microsoft Entra

    Pro integrované ověřování Microsoft Entra zadejte možnost -G bez uživatelského jména nebo hesla. Tato konfigurace vyžaduje, aby aktuální uživatelský účet Systému Windows (účet, pod kterým běží příkaz bcp), je federovaný s Microsoft Entra ID:

    Následující příklad exportuje data pomocí integrovaného ověřování Microsoft Entra. Příklad exportuje tabulku bcptest z databáze testdb na logickém serveru aadserver.database.windows.net a ukládá data do souboru c:\last\data2.datpomocí přihlašovacích údajů Systému Windows federovaných s ID Microsoft Entra:

    bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    

    Následující příklad importuje data pomocí integrovaného ověřování Microsoft Entra. Příklad importuje data ze souborové tabulky c:\last\data2.dat do tabulky bcptest v databázi testdb na logickém serveru aadserver.database.windows.netpomocí přihlašovacích údajů windows federovaných s Microsoft Entra ID:

    bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    
  • Spravovaná identita služby Microsoft Entra

    Důležitý

    bcp je úzce svázaný s řidičem. Hlavní verze bcp a ovladač, se kterým se vytvoří DSN, musí být stejné. Pokud chcete zjistit verzi, spusťte bcp -v.

    Export dat prostřednictvím bcp pomocí identity spravované služby ve Windows vyžaduje konfiguraci dsN.

    Konfigurace dsN na počítači s Windows:

    1. Stiskněte klávesu Windows na klávesnici.
    2. Zadejte ODBC a vyberte odpovídající verzi správce zdroje dat ODBC
    3. Vyberte kartu DSN uživatele nebo DSN systému.
    4. Vyberte Přidat a postupujte podle pokynů.
    5. Po zobrazení výzvy k zadání typu ověřování vyberte ověřování pomocí Azure Managed Service Identity.
    6. Pokud máte spravovanou identitu přiřazenou uživatelem, vložte Object (principal) ID identity do pole Přihlašovací ID v dolní části karty ověřování.
    7. Pokračujte podle pokynů ke konfiguraci dsN.

    Úplný návod, včetně snímků obrazovky, najdete v tématu Vytváření a úpravy sítí DSN v uživatelském rozhraní.

    Po nakonfigurování DSN lze bcp volat pomocí příznaku -D, aby označoval, že hodnota předaná pro -S je DSN.

    bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
    

  • přístupový token Microsoft Entra ID

    Uživatelé bcp (17.8 a novější verze) se můžou také ověřit pomocí tokenu. Následující příklady používají k načtení přístupového tokenu PowerShellu v Linuxu.

    Tento příklad načte přístupový token a umístí ho do souboru pro export dat pomocí spravované identity přiřazené systémem.

    Connect-AzAccount -Identity
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    

    Tento příklad předá Client ID parametru -AccountIdConnect-AzAccount k načtení přístupového tokenu a jeho umístění do souboru tokenu. Token se pak použije k exportu dat pomocí zadané spravované identity přiřazené uživatelem.

    Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity'
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    
  • Interaktivní Microsoft Entra

    Interaktivní ověřování Microsoft Entra, které je k dispozici pro všechny Azure SQL a SQL Server 2022+, umožňuje použít interaktivní dialogové okno k ověření, které také podporuje vícefaktorové ověřování.

    Interaktivní ověřování Microsoft Entra vyžaduje bcpverze 15.0.1000.34 nebo novější a ODBC verze 17.2 nebo novější.

    Pokud chcete povolit interaktivní ověřování, zadejte možnost -G jenom s uživatelským jménem (-U) a bez hesla.

    Následující příklad exportuje data pomocí interaktivního ověřování Microsoft Entra, které zahrnuje zadání uživatelského jména účtu Microsoft Entra.

    Interaktivní režim vyžaduje ruční zadání hesla nebo pro účty s povoleným vícefaktorovým ověřováním dokončete nakonfigurovanou metodu ověřování MFA.

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
    

    Pokud používáte uživatele Microsoft Entra, který je účtem Windows z federované domény, musí uživatelské jméno zadané v příkazovém řádku obsahovat svoji doménu (například joe@contoso.com):

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
    

    Pokud uživatelé typu host existují v konkrétním tenantovi Microsoft Entra a jsou součástí skupiny, která existuje ve službě SQL Database s oprávněními k provedení příkazu bcp, použije se jejich alias uživatele typu host (například keith0@adventure-works.com).

-h "rady [, ... n]"

Určuje nápovědu nebo rady, které se mají použít při hromadném importu dat do tabulky nebo zobrazení.

  • ORDER (sloupec [ASC | DESC] [, ...n])

    Pořadí řazení dat v datovém souboru Pokud se importovaná data seřadí podle clusterovaného indexu v tabulce, zlepší se výkon hromadného importu. Pokud je datový soubor seřazený v jiném pořadí, to znamená jiné než pořadí clusterovaného indexového klíče nebo pokud v tabulce není žádný clusterovaný index, klauzule ORDER se ignoruje. Zadané názvy sloupců musí být platné názvy sloupců v cílové tabulce. Ve výchozím nastavení bcp předpokládá, že datový soubor není seřazený. Pro optimalizovaný hromadný import SQL Server také ověří, že jsou importovaná data seřazená.

  • ROWS_PER_BATCH = bb

    Počet řádků dat na dávku (jako bb). Používá se v případě, že není zadán -b, což vede k tomu, že se celý datový soubor odesílá na server jako jedna transakce. Server optimalizuje hromadnou zátěž podle hodnoty bb. Ve výchozím nastavení je ROWS_PER_BATCH neznámý.

  • KILOBYTES_PER_BATCH = cc

    Přibližný počet kilobajtů dat na dávku (cc). Ve výchozím nastavení je KILOBYTES_PER_BATCH neznámý.

  • TABLOCK

    Určuje, že se zámek na úrovni tabulky při hromadné aktualizaci získá po dobu trvání operace hromadného načítání; jinak se získá zámek na úrovni řádku. Tento tip výrazně zvyšuje výkon, protože podržení zámku po dobu trvání operace hromadného kopírování snižuje kolize zámků v tabulce. Tabulku lze načíst souběžně z více klientů, pokud tabulka neobsahuje žádné indexy a je zadán TABLOCK. Ve výchozím nastavení je chování uzamčení určeno možností tabulky uzamčení tabulky při hromadném načítání.

    Poznámka

    Pokud je cílová tabulka seskupený columnstore index, není pro načítání více souběžnými klienty nutné použít nápovědu TABLOCK, protože každému souběžnému vláknu je přiřazena samostatná skupina řádků v rámci indexu, do které jsou data načítána. Podrobnosti najdete v koncepčních článcích indexu columnstore.

  • KONTROLA_Omezení

    Určuje, že všechna omezení cílové tabulky nebo zobrazení musí být kontrolována během operace hromadného importu. Bez CHECK_CONSTRAINTS nápovědy se všechna omezení CHECK a FOREIGN KEY ignorují a po operaci se omezení v tabulce označí jako nedůvěryhodné.

    Poznámka

    Omezení UNIQUE, PRIMARY KEY a NOT NULL se vždy vynucují.

    V určitém okamžiku je potřeba zkontrolovat omezení celé tabulky. Pokud byla tabulka před hromadným importem neprázdná, náklady na opětovné ověření podmínek mohou překročit náklady na použití podmínek CHECK na přírůstková data. Proto doporučujeme, abyste obvykle povolili kontrolu omezení při přírůstkovém hromadném importu.

    Situace, kdy můžete chtít zakázat omezení (výchozí chování), je situace, kdy vstupní data obsahují řádky, které porušují omezení. Pokud jsou omezení CHECK zakázaná, můžete data importovat a pak pomocí příkazů Transact-SQL odebrat data, která nejsou platná.

    Poznámka

    bcp teď vynucuje ověření dat a kontroly dat, které můžou způsobit selhání skriptů, pokud se spustí na neplatných datech v datovém souboru.

    Poznámka

    Přepínač -mmax_errors se nevztahuje na kontrolu omezení.

  • AKTIVACE_POŽÁRU

    Pokud je zadán v argumentu, všechny triggery vložení definované v cílové tabulce se spustí během operace hromadného kopírování. Pokud FIRE_TRIGGERS nezadáte, nespustí se žádné triggery vložení. FIRE_TRIGGERS se ignoruje pro argumenty out, queryouta format.

-i vstupní_soubor

Určuje název souboru odpovědi, který obsahuje odpovědi na otázky příkazového řádku pro každé datové pole, když se hromadná kopie provádí pomocí interaktivního režimu (-n, -c, -wnebo -N není zadáno).

Pokud input_file začíná spojovníkem (-) nebo lomítkem (/), nezahrnujte mezeru mezi -i a hodnotou input_file.

-k

Určuje, že prázdné sloupce by měly zachovat hodnotu null během operace, místo aby měly žádné výchozí hodnoty pro vložené sloupce. Další informace naleznete v tématu Zachovat hodnoty null nebo výchozí hodnoty při hromadném importu (SQL Server).

-K záměr_aplikace

Deklaruje typ úlohy aplikace při připojování k serveru. Jedinou možnou hodnotou je ReadOnly. Pokud není zadaný -K, nástroj bcp nepodporuje připojení k sekundární replice ve skupině dostupnosti AlwaysOn. Další informace najdete v tématu Přenesení úlohy pouze pro čtení na sekundární replikát skupiny dostupnosti Always On.

-l login_timeout

Určuje časový limit přihlášení. Možnost -l určuje počet sekund před vypršením časového limitu přihlášení k SQL Serveru při pokusu o připojení k serveru. Výchozí časový limit přihlášení je 15 sekund. Časový limit přihlášení musí být číslo od 0 do 65534. Pokud zadaná hodnota není číselná nebo nepatří do této oblasti, bcp vygeneruje chybovou zprávu. Hodnota 0 určuje nekonečný časový limit.

-L last_row

Určuje počet posledního řádku, který se má exportovat z tabulky nebo importovat z datového souboru. Tento parametr vyžaduje hodnotu větší než (>) 0, ale menší než (<) nebo rovno (=) číslo posledního řádku. Pokud tento parametr chybí, je výchozím řádkem souboru poslední řádek.

last_row může být kladné celé číslo s hodnotou až 2^63-1.

-m max_errors

Určuje maximální počet chyb syntaxe, ke kterým může dojít před zrušením operace bcp. Chyba syntaxe znamená chybu převodu dat na cílový datový typ. Celkový součet max_errors vylučuje všechny chyby, které lze zjistit pouze na serveru, například porušení omezení.

Řádek, který nejde zkopírovat nástrojem bcp, se ignoruje a počítá se jako jedna chyba. Pokud tato možnost není zahrnutá, výchozí hodnota je 10.

Poznámka

Možnost -m se také nevztahuje na převod peněž nebo celých čísel datových typů.

-n

Provede operaci hromadného kopírování pomocí nativních datových typů dat (databáze). Tato možnost nezobrazí výzvu pro každé pole; používá výchozí hodnoty.

Další informace naleznete v tématu Použití nativního formátu k importu nebo exportu dat (SQL Server).

-N

Provede hromadné kopírování využívající nativní (databázové) datové typy pro neznaková data a znaky Unicode pro znaková data. Tato možnost nabízí vyšší výkonovou alternativu k možnosti -w a je určená k přenosu dat z jedné instance SQL Serveru do jiného pomocí datového souboru. Systém nezobrazí výzvu pro každé pole. Tuto možnost použijte při přenosu dat obsahujících rozšířené znaky ANSI a chcete využít výkon nativního režimu.

Další informace najdete v tématu Použití nativního formátu Unicode k importu nebo exportu dat (SQL Server).

Pokud exportujete a poté importujete data do stejného schématu tabulky pomocí bcp s -N, může se zobrazit upozornění na zkrácení, je-li zde sloupec s pevnou délkou bez unicode znaků (například CHAR(10)).

Upozornění je možné ignorovat. Jedním ze způsobů, jak toto upozornění vyřešit, je použít -n místo -N.

-o výstupní_soubor

Určuje název souboru, který přijímá výstup přesměrovaný z příkazového řádku.

Pokud output_file začíná spojovníkem (-) nebo lomítkem (/), nezahrnujte mezeru mezi -o a hodnotou output_file.

-P heslo

Určuje heslo pro přihlašovací ID. Pokud se tato možnost nepoužívá, příkaz bcp vyzve k zadání hesla. Pokud se tato možnost použije na konci příkazového řádku bez hesla, bcp použije výchozí heslo (NULL).

Důležitý

Nepoužívejte prázdné heslo. Použijte silné heslo.

Pokud chcete heslo maskovat, nezadávejte možnost -P spolu s možností -U. Místo toho po zadání bcp spolu s možností -U a dalšími přepínači (nezadávejte -P), stiskněte ENTER a příkaz vás vyzve k zadání hesla. Tato metoda zajišťuje maskování hesla při jeho zadání.

Pokud heslo začíná pomlčkou () nebo lomítkem (), nepřidávejte mezeru mezi a hodnotou hesla .

-q

Spustí příkaz SET QUOTED_IDENTIFIER ON v připojení mezi nástrojem bcp a instancí SQL Serveru. Pomocí této možnosti můžete zadat databázi, vlastníka, tabulku nebo název zobrazení, který obsahuje mezeru nebo jednoduchou uvozovku. Vložte celý název třídílné tabulky nebo zobrazení do uvozovek ("").

Chcete-li zadat název databáze obsahující mezeru nebo jednoduchou uvozovku, musíte použít možnost -q.

-q se nevztahuje na hodnoty předané -d.

Další informace naleznete v tématu Poznámky, dále v tomto článku.

-r row_term

Určuje ukončovací znak řádku. Výchozí hodnota je \n (znak nového řádku). Tento parametr použijte k nahrazení výchozího oddělovače řádku. Další informace naleznete v tématu Specifikace ukončovačů políček a řádků (SQL Server).

Pokud zadáte ukončovací znak řádku v šestnáctkovém zápisu v příkazu bcp, hodnota bude zkrácena v 0x00. Pokud například zadáte 0x410041, použije se 0x41.

Pokud row_term začíná pomlčkou (-) nebo lomítkem (/), nezahrnujte mezeru mezi -r a hodnotou row_term.

-R

Určuje, že data měny, data a času se hromadně zkopírují do SQL Serveru pomocí místního formátu definovaného pro nastavení národního prostředí klientského počítače. Ve výchozím nastavení se místní nastavení ignoruje.

-S server_name [\instance_name]

Určuje instanci SYSTÉMU SQL Server, ke které se má připojit. Pokud není zadaný žádný server, nástroj bcp se připojí k výchozí instanci SQL Serveru v místním počítači. Tato možnost se vyžaduje, když se příkaz bcp spustí ze vzdáleného počítače v síti nebo místní pojmenované instance. Pokud se chcete připojit k výchozí instanci SQL Serveru na serveru, zadejte pouze server_name. Pokud se chcete připojit k pojmenované instanci SQL Serveru, zadejte server_name**\**instance_name.

-t field_term

Určuje ukončovací znak pole. Výchozí hodnota je \t (znak tabulátoru). Tento parametr použijte k přepsání výchozího ukončovače pole. Další informace naleznete v tématu Specifikace ukončovacích znaků polí a řádků (SQL Server).

Pokud zadáte ukončovací znak pole v šestnáctkovém zápisu v příkazu bcp, hodnota bude zkrácena v 0x00. Pokud například zadáte 0x410041, použije se 0x41.

Pokud field_term začíná spojovníkem (-) nebo lomítkem (/), nezahrnujte mezeru mezi -t a hodnotou field_term.

-T

Určuje, že utilita bcp se připojuje k SQL Serveru pomocí důvěryhodného připojení s integrovaným zabezpečením. Přihlašovací bezpečnostní údaje síťového uživatele, login_ida heslo, nejsou povinné. Pokud není zadaný -T, musíte zadat -U a -P pro úspěšné připojení.

Důležitý

Když se nástroj bcp připojuje k SQL Serveru s důvěryhodným připojením pomocí integrovaného zabezpečení, použijte možnost -T (důvěryhodné připojení) místo uživatelské jméno a kombinaci hesla. Pokud se nástroj bcp připojuje ke službě SQL Database nebo Azure Synapse Analytics, ověřování systému Windows nebo ověřování Microsoft Entra se nepodporuje. Použijte možnosti -U a -P.

-U login_id

Určuje přihlašovací ID použité pro připojení k SQL Serveru.

-v

Hlásí číslo verze nástroje bcp a copyright.

-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)

Provede operaci hromadného kopírování pomocí datových typů ze starší verze SQL Serveru. Tato možnost nezobrazí výzvu pro každé pole; používá výchozí hodnoty.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) a SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)

Pokud chcete například generovat data pro typy, které SQL Server 2000 (8.x) nepodporuje, ale byly zavedeny v novějších verzích SQL Serveru, použijte možnost -V80.

Další informace naleznete v tématu Import nativních a znakových formátů dat ze starších verzí SQL Serveru.

-w

Provede operaci hromadného kopírování pomocí znaků Unicode. Tato možnost nezobrazí výzvu pro každé pole; používá nchar jako typ úložiště, žádné předpony, \t (znak tabulátoru) jako oddělovač polí a \n (znak nového řádku) jako ukončovací znak řádku. -w není kompatibilní s -c.

Další informace naleznete v tématu Použití formátu znaků unicode k importu nebo exportu dat (SQL Server).

-x

Tato možnost se používá s možnostmi format a -fformat_file a generuje formátový soubor založený na jazyce XML místo výchozího souboru jiného formátu než XML. Při importu nebo exportu dat nefunguje -x. Vygeneruje chybu, pokud se používá bez format i -fformat_file.

Poznámky

  • Klient bcp 13.0 se nainstaluje při instalaci nástrojů Microsoft SQL Serveru 2019 (15.x). Pokud jsou nástroje nainstalované pro více verzí SQL Serveru v závislosti na pořadí hodnot proměnné prostředí PATH, možná používáte starší klienta bcp místo klienta bcp klienta 13.0. Tato proměnná prostředí definuje sadu adresářů používaných systémem Windows k hledání spustitelných souborů. Pokud chcete zjistit, kterou verzi používáte, spusťte na příkazovém řádku Windows příkaz bcp -v. Informace o tom, jak nastavit cestu k příkazu v proměnné prostředí PATH, naleznete v části Proměnné prostředí nebo vyhledejte výraz proměnné prostředí v nápovědě systému Windows.

    Abyste měli jistotu, že je spuštěná nejnovější verze nástroje bcp, musíte odebrat všechny starší verze nástroje bcp.

    Chcete-li určit, kde jsou nainstalovány všechny verze nástroje bcp, zadejte do příkazového řádku:

    where bcp.exe
    
  • Nástroj bcp lze stáhnout také odděleně od sady Microsoft SQL Server 2016 Feature Pack. Vyberte ENU\x64\MsSqlCmdLnUtils.msi nebo ENU\x86\MsSqlCmdLnUtils.msi.

  • Soubory formátu XML jsou podporovány pouze v případech, kdy jsou nainstalovány nástroje SQL Serveru společně s SQL Server Native Client.

  • Informace o tom, kde najít nebo jak spustit nástroj bcp a o konvencích syntaxe nástrojů příkazového řádku, viz téma Nástroje příkazového řádku SQL (databázový stroj).

  • Informace o přípravě dat pro operace hromadného importu nebo exportu najdete v tématu Příprava dat pro hromadný export nebo import.

  • Informace o tom, kdy jsou v transakčním protokolu zaznamenány operace vložení řádku prováděné hromadným importem, naleznete v tématu Požadavky pro minimální protokolování hromadného importu.

  • Použití dalších speciálních znaků

    Znaky <, >, |, &a ^ jsou speciálními znaky příkazového prostředí a musí jim předcházet řídicí znak (^) nebo být uzavřeny v uvozovkách, když jsou použity v řetězci (například "StringContaining&Symbol"). Pokud k uzavření řetězce obsahujícího jeden ze speciálních znaků použijete uvozovky, nastaví se uvozovky jako součást hodnoty proměnné prostředí.

Podpora nativních datových souborů

V SYSTÉMU SQL Server nástroj bcp podporuje nativní datové soubory kompatibilní s verzemi SQL Serveru počínaje SQL Serverem 2000 (8.x) a novějším.

Počítané sloupce a sloupce časového razítka

Hodnoty v datovém souboru, které jsou importovány pro vypočítané sloupce nebo sloupce časových razítek , se ignorují a SQL Server automaticky přiřadí hodnoty. Pokud datový soubor neobsahuje hodnoty pro vypočítané nebo časové razítko sloupce v tabulce, použijte formátový soubor k určení, že vypočítané nebo časové razítko sloupce v tabulce by se při importu dat měly přeskočit; SQL Server automaticky přiřadí hodnoty pro sloupec.

Počítané a časové razítko sloupce se hromadně kopírují z SQL Serveru do datového souboru obvyklým způsobem.

Určení identifikátorů obsahujících mezery nebo uvozovky

Identifikátory SQL Serveru můžou obsahovat znaky, jako jsou vložené mezery a uvozovky. Tyto identifikátory musí být považovány za následující:

  • Při zadání identifikátoru nebo názvu souboru, který obsahuje mezeru nebo uvozovky na příkazovém řádku, uzavřete identifikátor do uvozovek ("").

    Například následující příkaz bcp out vytvoří datový soubor s názvem Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Chcete-li zadat název databáze obsahující mezeru nebo uvozovky, musíte použít možnost -q.

  • U názvů vlastníka, tabulky nebo zobrazení, které obsahují vložené mezery nebo uvozovky, můžete:

    • Zadejte možnost -q nebo

    • Uzavřete vlastníka, tabulku nebo název zobrazení do závorek ([]) a umístěte je do uvozovek.

Ověření dat

bcp teď vynucuje ověření dat a kontroly dat, které můžou způsobit selhání skriptů, pokud se spustí na neplatných datech v datovém souboru. Například bcp teď ověří, že:

  • Nativní reprezentace plovoucích nebo skutečných datových typů jsou platné.

  • Data Unicode mají rovnoměrnou délku bajtu.

Formuláře neplatných dat, která je možné hromadně importovat v dřívějších verzích SQL Serveru, se teď nedají načíst; zatímco v dřívějších verzích k selhání nedošlo, dokud se klient nepokoušel získat přístup k neplatným datům. Přidané ověření minimalizuje překvapení při dotazování na data po hromadném načtení.

Hromadný export nebo import dokumentů SQLXML

K hromadnému exportu nebo importu dat SQLXML použijte jeden z následujících datových typů ve formátu souboru.

Datový typ Účinek
SQLCHAR nebo SQLVARYCHAR Data se odesílají na znakové stránce klienta nebo na znakové stránce určené kolací. Efekt je stejný jako určení přepínače -c bez zadání formátu souboru.
SQLNCHAR nebo SQLNVARCHAR Data se odesílají jako Unicode. Efekt je stejný jako určení přepínače -w bez zadání formátu souboru.
SQLBINARY nebo SQLVARYBIN Data se odesílají bez jakéhokoli převodu.

Dovolení

Operace bcp out vyžaduje oprávnění SELECT ve zdrojové tabulce.

Operace bcp in minimálně vyžaduje oprávnění SELECT/INSERT v cílové tabulce. Kromě toho se vyžaduje oprávnění ALTER TABLE, pokud platí některá z následujících podmínek:

  • Existují omezení a není zadán příznak CHECK_CONSTRAINTS.

    Poznámka

    Zakázání omezení je výchozí chování. Pokud chcete explicitně povolit omezení, použijte možnost -h s nápovědou CHECK_CONSTRAINTS.

  • Triggery existují a indikace FIRE_TRIGGER není specifikována.

    Poznámka

    Ve výchozím nastavení se triggery neaktivují. Pokud chcete aktivovat triggery explicitně, použijte možnost -h s nápovědou FIRE_TRIGGERS.

  • K importu hodnot identity z datového souboru použijete možnost -E.

Poznámka

Vyžadování oprávnění ALTER TABLE v cílové tabulce bylo v SYSTÉMU SQL Server 2005 (9.x) nové. Tento nový požadavek může způsobit, že bcp skripty, které nevynucují aktivační události a kontroly omezení, selžou, pokud uživatelský účet nemá oprávnění ALTER table pro cílovou tabulku.

Osvědčené postupy pro režim znaků (-c) a nativní režim (-n)

Tato část obsahuje doporučení pro režim znaků (-c) a nativní režim (-n).

  • (Správce/uživatel) Pokud je to možné, použijte nativní formát (-n), abyste se vyhnuli problému s oddělovačem. K exportu a importu pomocí SQL Serveru použijte nativní formát. Exportujte data z SQL Serveru pomocí možnosti -c nebo -w, pokud se data naimportují do databáze jiného typu než SQL Server.

  • (Správce) Ověřte data při použití BCP OUT. Pokud například použijete BCP OUT, BCP IN a pak BCP OUT ověřte, že jsou data správně exportována a koncové hodnoty se nepoužívají jako součást některé datové hodnoty. Zvažte přepsání výchozích ukončovačů (pomocí možností -t a -r) náhodnými šestnáctkovými hodnotami, aby nedocházelo ke konfliktům mezi ukončovacími hodnotami a datovými hodnotami.

  • (Uživatel) Pokud chcete minimalizovat možnost konfliktu se skutečnou řetězcovou hodnotou, použijte dlouhý a jedinečný ukončovací znak (libovolnou posloupnost bajtů nebo znaků). Můžete to provést pomocí možností -t a -r.

Příklady

Příklady v této části využívají ukázkovou databázi WideWorldImporters pro SQL Server 2016 (13.x) a novější verze, Azure SQL Database a Azure SQL Managed Instance. WideWorldImporters lze stáhnout z https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Podívejte se na příkazy RESTORE pro syntax obnovení ukázkové databáze.

Příklady testovacích podmínek

Kromě toho, kde je uvedeno jinak, příklady předpokládají, že používáte ověřování systému Windows a máte důvěryhodné připojení k instanci serveru, na které používáte příkaz bcp. V mnoha příkladech se používá adresář s názvem D:\BCP.

Následující skript vytvoří prázdnou kopii tabulky WideWorldImporters.Warehouse.StockItemTransactions a pak přidá omezení primárního klíče. V aplikaci SQL Server Management Studio (SSMS) spusťte následující skript T-SQL.

USE WideWorldImporters;
GO

SET NOCOUNT ON;

IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
    SELECT * INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
    FROM WideWorldImporters.Warehouse.StockItemTransactions
    WHERE 1 = 2;

    ALTER TABLE Warehouse.StockItemTransactions_bcp
    ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp PRIMARY KEY NONCLUSTERED
    (StockItemTransactionID ASC);
END

Tabulku StockItemTransactions_bcp můžete podle potřeby zkrátit:

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

A. Identifikace verze nástroje bcp

Na příkazovém řádku zadejte následující příkaz:

bcp -v

B. Kopírování řádků tabulky do datového souboru (s důvěryhodným připojením)

Následující příklady ilustrují možnost out v tabulce WideWorldImporters.Warehouse.StockItemTransactions.

  • Základní

    Tento příklad vytvoří datový soubor s názvem StockItemTransactions_character.bcp a zkopíruje do něj data tabulky ve formátu znaku .

    Na příkazovém řádku zadejte následující příkaz:

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • Rozšířené

    Tento příklad vytvoří datový soubor s názvem StockItemTransactions_native.bcp a zkopíruje do něj data tabulky pomocí nativního formátu. Příklad také: určuje maximální počet chyb syntaxe, soubor chyby a výstupní soubor.

    Na příkazovém řádku zadejte následující příkaz:

    bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\BCP\StockItemTransactions_native.bcp -m 1 -n -e D:\BCP\Error_out.log -o D:\BCP\Output_out.log -S -T
    

Zkontrolujte Error_out.log a Output_out.log. Error_out.log by měla být prázdná. Porovnejte velikosti souborů mezi StockItemTransactions_character.bcp a StockItemTransactions_native.bcp.

C. Kopírování řádků tabulky do datového souboru (s ověřováním ve smíšeném režimu)

Následující příklad znázorňuje možnost out v tabulce WideWorldImporters.Warehouse.StockItemTransactions. Tento příklad vytvoří datový soubor s názvem a zkopíruje do něj data tabulky v podobě formátu s použitím znaku .

V příkladu se předpokládá, že používáte ověřování ve smíšeném režimu a k zadání přihlašovacího ID je nutné použít přepínač -U. Pokud se také nepřipojíte k výchozí instanci SQL Serveru v místním počítači, použijte přepínač -S k zadání názvu systému a volitelně názvu instance.

Na příkazovém řádku zadejte následující příkaz: (Systém vás vyzve k zadání hesla.)

bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D. Kopírování dat ze souboru do tabulky

Následující příklady ilustrují možnost in v tabulce WideWorldImporters.Warehouse.StockItemTransactions_bcp pomocí souborů vytvořených dříve.

  • Základní

    V tomto příkladu se používá dříve vytvořený datový soubor StockItemTransactions_character.bcp.

    Na příkazovém řádku zadejte následující příkaz:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • rozšířeno

    V tomto příkladu se používá dříve vytvořený datový soubor StockItemTransactions_native.bcp. Příklad také ukazuje použití nápovědy TABLOCK, která určuje velikost dávky, maximální počet syntaktických chyb, soubor s chybami a výstupní soubor.

    Na příkazovém řádku zadejte následující příkaz:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\BCP\Error_in.log -o D:\BCP\Output_in.log -S -T
    

    Zkontrolujte Error_in.log a Output_in.log.

E. Zkopírování konkrétního sloupce do datového souboru

Pokud chcete zkopírovat konkrétní sloupec, můžete použít možnost queryout. Následující příklad zkopíruje do datového souboru pouze sloupec StockItemTransactionID tabulky Warehouse.StockItemTransactions.

Na příkazovém řádku zadejte následující příkaz:

bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\BCP\StockItemTransactionID_c.bcp -c -T

F. Zkopírování konkrétního řádku do datového souboru

Pokud chcete zkopírovat konkrétní řádek, můžete použít možnost queryout. Následující příklad zkopíruje pouze řádek osoby s názvem Amy Trefl z tabulky WideWorldImporters.Application.People do datového souboru Amy_Trefl_c.bcp.

Poznámka

Přepínač -d slouží k identifikaci databáze.

Na příkazovém řádku zadejte následující příkaz:

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\BCP\Amy_Trefl_c.bcp -d WideWorldImporters -c -T

G. Kopírování dat z dotazu do datového souboru

Pokud chcete zkopírovat sadu výsledků z příkazu Transact-SQL do datového souboru, použijte možnost queryout. Následující příklad zkopíruje názvy z tabulky WideWorldImporters.Application.People seřazené úplným názvem do datového souboru People.txt.

Poznámka

Přepínač -t slouží k vytvoření souboru s oddělovači.

Na příkazovém řádku zadejte následující příkaz:

bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\BCP\People.txt -t, -c -T

H. Vytváření formátových souborů

Následující příklad vytvoří tři různé soubory formátu pro tabulku Warehouse.StockItemTransactions v databázi WideWorldImporters. Zkontrolujte obsah každého vytvořeného souboru.

Na příkazovém řádku zadejte následující příkazy:

REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.fmt -c -T

REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_n.fmt -n -T

REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.xml -x -c -T

Poznámka

Pokud chcete použít přepínač -x, musíte použít klienta bcp 9.0. Informace o použití klienta bcp 9.0 naleznete v tématu "Poznámky."

Další informace najdete v tématu Použití souborů formátu NEŽ XML (SQL Server) a XML Format Files (SQL Server).

I. Použijte soubor formátu k hromadnému importu pomocí bcp

Pokud chcete při importu dat do instance SQL Serveru použít dříve vytvořený formátovací soubor, použijte přepínač -f s možností in. Následující příkaz například hromadně zkopíruje obsah datového souboru StockItemTransactions_character.bcpdo kopie tabulky Warehouse.StockItemTransactions_bcp pomocí dříve vytvořeného formátu souboru StockItemTransactions_c.xml.

Poznámka

Přepínač -L slouží k importu pouze prvních 100 záznamů.

Na příkazovém řádku zadejte následující příkaz:

bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\BCP\StockItemTransactions_character.bcp -L 100 -f D:\BCP\StockItemTransactions_c.xml -T

Poznámka

Formátovací soubory jsou užitečné, když se pole datových souborů liší od sloupců tabulky; Například v jejich čísle, řazení nebo datových typech. Další informace najdete v tématu Formátovat soubory pro import nebo export dat (SQL Server).

J. Určete znakovou stránku

Následující příklad částečného kódu ukazuje import bcp se specifikací znakové stránky 65001:

bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...

K. Příklad výstupního souboru s využitím vlastního pole a ukončovače řádků

Tento příklad ukazuje dva ukázkové soubory vygenerované bcp pomocí vlastních ukončovačů polí a řádků.

  1. Vytvořte tabulku dbo.T1 v databázi tempdb se dvěma sloupci, ID a Name.

    USE tempdb;
    GO
    
    CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR(20));
    GO
    
    INSERT INTO dbo.T1 VALUES (1, N'Natalia');
    INSERT INTO dbo.T1 VALUES (2, N'Mark');
    INSERT INTO dbo.T1 VALUES (3, N'Randolph');
    GO
    
  2. Vygenerujte výstupní soubor z ukázkové tabulky dbo.T1pomocí vlastního ukončovače pole.

    V tomto příkladu je název serveru MYSERVERa vlastní oddělovač pole je specifikován -t ,.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
    

    Zde je sada výsledků.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Vygenerujte výstupní soubor z ukázkové tabulky dbo.T1pomocí vlastního ukončovače pole a vlastního ukončování řádku.

    V tomto příkladu je název serveru MYSERVER, vlastní ukončovací znak pole je určen -t, a vlastní ukončovací znak řádku je určen -r :.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
    

    Tady je sada výsledků.

    1,Natalia:2,Mark:3,Randolph:
    

    Poznámka

    Ukončovací znak řádku se vždy přidá, a to i do posledního záznamu. Ukončovací znak pole se ale nepřidá do posledního pole.

Další příklady

Následující články obsahují příklady použití bcp:

Důležité informace a omezení

  • Nástroj bcp má omezení, že chybová zpráva zobrazuje pouze 512 bajtů. Zobrazí se pouze prvních 512 bajtů chybové zprávy.

Získejte pomoc k

Přispění k dokumentaci SQL

Věděli jste, že obsah SQL můžete upravovat sami? Pokud to uděláte, nejen že vám pomůžete vylepšit naši dokumentaci, ale také jste získali kredit jako přispěvatel na stránku.

Další informace najdete v tématu Jak přispívat do dokumentace k SQL Serveru