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.
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
- stáhnout ovladač ODBC pro SQL Server
- stáhnout nástroje příkazového řádku Společnosti Microsoft 15 pro SQL Server (x64)
- stáhnout nástroje příkazového řádku Společnosti Microsoft 15 pro SQL Server (x86)
Linux a macOS
Pokyny k instalaci
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.
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
, -w
nebo -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
neboout
,-f
vyžaduje existující formátový soubor.Poznámka
Použití formátu souboru s možností
in
neboout
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 jebcp.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ázetestdb
ze serveru Azureaadserver.database.windows.net
a uloží data do souboruc:\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 tabulkybcptest
pro databázovétestdb
na serveru Azureaadserver.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ázetestdb
na logickém serveruaadserver.database.windows.net
a ukládá data do souboruc:\last\data2.dat
pomocí 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 tabulkybcptest
v databázitestdb
na logickém serveruaadserver.database.windows.net
pomocí 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:
- Stiskněte klávesu Windows na klávesnici.
- Zadejte
ODBC
a vyberte odpovídající verzi správce zdroje dat ODBC - Vyberte kartu DSN uživatele nebo DSN systému.
- Vyberte Přidat a postupujte podle pokynů.
- Po zobrazení výzvy k zadání typu ověřování vyberte ověřování pomocí Azure Managed Service Identity.
- 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í. - 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-AccountId
Connect-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č
-m
max_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
,queryout
aformat
.
-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
, -w
nebo -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
-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 -f
format_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 -f
format_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
neboENU\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ázvemCurrency 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
neboUzavř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
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ědyTABLOCK
, 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
aOutput_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.bcp
do 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ů.
Vytvořte tabulku
dbo.T1
v databázitempdb
se dvěma sloupci,ID
aName
.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
Vygenerujte výstupní soubor z ukázkové tabulky
dbo.T1
pomocí vlastního ukončovače pole.V tomto příkladu je název serveru
MYSERVER
a 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
Vygenerujte výstupní soubor z ukázkové tabulky
dbo.T1
pomocí 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:
Formáty dat pro hromadný import nebo hromadný export (SQL Server)
zachovat hodnoty null nebo výchozí hodnoty během hromadného importu (SQL Server)
Zachovat hodnoty identity při hromadném importu dat (SQL Server)
Formátovat soubory pro import nebo export dat (SQL Server)
- Vytvoření souboru formátového (SQL Server)
- Použití formátu souboru k hromadnému importu dat (SQL Server)
- přeskočit sloupec tabulky (SQL Server) pomocí formátového souboru
- Použití formátu souboru k přeskočení datového pole (SQL Server)
- Mapování sloupců tabulky na pole datových souborů (SQL Server) pomocí formátového souboru
Příklady hromadného importu a exportu dokumentů XML (SQL Server)
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.
Související obsah
- Příprava dat pro hromadný export nebo import
- hromadné vložení (Transact-SQL)
-
OPENROWSET (Transact-SQL) - SET QUOTED_IDENTIFIER (Transact-SQL)
-
sp_configure (Transact-SQL) - sp_tableoption (Transact-SQL)
- Formát souborů pro import nebo export dat (SQL Server)
Získejte pomoc k
- Návrhy pro SQL: Máte návrhy na vylepšení SQL Serveru?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (značka sql-server): Položte dotazy k SQL Serveru
- Stack Overflow (značka sql-server): Odpovědi na otázky týkající se vývoje SQL
- Reddit: Obecná diskuze o SQL Serveru
- licenčních podmínek a informací pro Microsoft SQL Server
- možnosti podpory pro firemní uživatele
- další nápověda a zpětná vazba k SQL Serveru
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