Vytvoření formátu souboru pomocí bcp (SQL Server)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Tento článek popisuje, jak pomocí nástroje bcp vytvořit formátový soubor pro konkrétní tabulku. Formátový soubor je založen na zadané možnosti datového typu (-n, -c, -wnebo -N) a oddělovače tabulky nebo zobrazení.

Při hromadném importu do tabulky SQL Serveru nebo hromadného exportu dat z tabulky můžete pro zápis datových souborů použít formátovací soubor jako flexibilní systém. Formátové soubory vyžadují pro dosažení souladu s jinými datovými formáty nebo čtení datových souborů z jiných softwarových programů jen minimální nebo žádné úpravy.

Omezení

Verze nástroje (bcp.exe) používaná bcp k čtení formátového souboru musí být stejná nebo pozdější než verze použitá k vytvoření formátového souboru. Například SQL Server 2025 (17.x) bcp dokáže číst soubor ve formátu verze 16.0, který generuje SQL Server 2022 (16.x), bcpale SQL Server 2022 (16.x) bcp nemůže přečíst soubor ve formátu verze 17.0, který je generován SQL Server 2025 (17.x). bcp

Poznámka

Tato syntaxe, včetně hromadného vložení, není ve službě Azure Synapse Analytics podporovaná. V Azure Synapse Analytics a dalších integracích cloudové databázové platformy můžete provádět přesun dat prostřednictvím příkazu COPY ve službě Azure Data Factorynebo pomocí příkazů T-SQL, jako je COPY INTO a PolyBase.

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

SQL Server podporuje dva typy formátů souborů: ne-XML formát a XML formát. Formát jiného formátu než XML je původní formát podporovaný dřívějšími verzemi SQL Serveru.

Obecně platí, že soubory formátu XML a jiné než XML jsou zaměnitelné. Doporučujeme však použít syntaxi XML pro formátové soubory, protože poskytují několik výhod oproti souborům formátu mimo XML.

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty . Adventure Works Cycles je fiktivní výrobní společnost, která slouží k předvedení konceptů a scénářů databáze.

Vytvořte formátový soubor

Pro vytvoření bcp formátového souboru zadejte format argument a použijte nul místo cesty k datovému souboru. Volba format vždy vyžaduje možnost -f.

Chcete-li vytvořit soubor formátu XML, musíte zadat možnost -x, například bcp <table_or_view> format nul -f <format_file_name> -x.

K rozlišení souboru ve formátu XML použijte jako příponu názvu souboru .xml, například MyTable.xml.

Informace o struktuře a polích souborů ve formátu XML naleznete v článku Soubory ve formátu XML.

Příklady

Tato sekce obsahuje příklady, které ukazují, jak použít bcp k vytvoření formátovaného souboru. Tabulka HumanResources.Department obsahuje čtyři sloupce: DepartmentID, Name, GroupNamea ModifiedDate.

A. Vytvořte formátový soubor pro znaková data

Následující příklad vytváří formátový soubor pro tabulku HumanResources.Department pomocí formátů znakových dat.

Vytvořte soubor ve formátu XML s názvem Department-c.xml. Formátový soubor používá nevýchozí terminátor pole (,). Následující sekce ukazuje obsah vygenerovaného formátového souboru.

Příkaz bcp obsahuje následující kvalifikátory.

Kvalifikátoři Popis
format nul -x -f <format_file> Určuje soubor formátu XML.
-c Určuje data znaků.
-t, Určuje jako ukončovací znak pole čárku (,).

Poznámka: Pokud datový soubor používá výchozí ukončovací znak pole (\t), -t přepínač není nutný.
-T Specifikuje, že se bcp připojuje k serveru SQL Server pomocí důvěryhodného připojení s integrovaným zabezpečením. Pokud nespecifikujete -T, musíte specifikovat -U a -P pro úspěšné přihlášení.

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

bcp AdventureWorks2025.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

Vygenerovaný formát souboru Department-c.xmlobsahuje následující elementy XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Pro informace o syntaxi tohoto formátu souboru viz XML formátové soubory. Informace o znakových datech naleznete v části Použití znakového formátu k importu nebo exportu dat.

B. Vytvořte formátový soubor pro nativní data

Následující příklad vytváří formátový soubor pro tabulku HumanResources.Department pomocí nativních datových typů.

Vytvořte soubor ve formátu XML s názvem Department-n.xml. Následující sekce ukazuje obsah vygenerovaného formátového souboru.

Příkaz bcp obsahuje následující kvalifikátory.

Kvalifikátoři Popis
format nul -x -f <format_file> Určuje soubor formátu XML.
-n Určuje nativní datové typy.
-T Specifikuje, že se bcp připojuje k serveru SQL Server pomocí důvěryhodného připojení s integrovaným zabezpečením. Pokud nespecifikujete -T, musíte specifikovat -U a -P pro úspěšné přihlášení.

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

bcp AdventureWorks2025.HumanResources.Department format nul -x -f Department-n.xml -n -T

Vygenerovaný formát souboru Department-n.xmlobsahuje následující elementy XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Pro informace o syntaxi tohoto formátu souboru viz XML formátové soubory. Pro informace o tom, jak používat nativní data, viz Použít nativní formát pro import nebo export dat.

C. Vytvoření souboru jiného formátu než XML pro nativní data Unicode

Chcete-li vytvořit soubor formátu jiného formátu než XML pro nativní data Unicode pro HumanResources.Department tabulku, použijte následující příkaz:

bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt

Pro více informací o tom, jak používat nativní data Unicode, viz Použít nativní formát Unicode pro import nebo export dat.

D. Vytvoření souboru formátu jiného formátu než XML pro data znaků Unicode

Chcete-li vytvořit soubor formátu jiného formátu než XML pro data znaků Unicode pro tabulku HumanResources.Department, která používá výchozí ukončovací znaky, použijte následující příkaz:

bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt

Pro více informací o tom, jak používat Unicode znaková data, viz Použít Unicode znakový formát pro import nebo export dat.

E. Použít soubor formátu s volbou kódové stránky

Když vytvoříte formátový soubor pomocí bcp format, do formátového souboru se zapíší informace o řazení a kódové stránce.

Následující příklad formátu souboru pro tabulku s pěti sloupci obsahuje kolaci.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0          Cyrillic_General_CS_AS
2  SQLCHAR         0       0       "\t"             2     c_1          Cyrillic_General_CS_AS
3  SQLCHAR         0       3000    "\t"             3     c_2          Cyrillic_General_CS_AS
4  SQLCHAR         0       5       "\t"             4     c_3          ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4          ""

Pokud se pokusíte importovat data do SQL Serveru pomocí bcp in -c -C65001 -f format_file ... nebo pomocí BULK INSERT nebo OPENROWSET s FORMATFILE='format_file' CODEPAGE=65001 ..., mají informace o řazení nebo kódové stránce ve formátovém souboru přednost před volbou 65001.

Proto pokud vygenerujete formátový soubor, musíte ručně smazat informace o třídění z vygenerovaného formátového souboru, než začnete data zpět importovat do SQL Server.

Následující příklad ukazuje soubor formátu bez informací o řazení.

13.0
5
1  SQLCHAR         0       0       "\t"             1     c_0              ""
2  SQLCHAR         0       0       "\t"             2     c_1              ""
3  SQLCHAR         0       3000    "\t"             3     c_2              ""
4  SQLCHAR         0       5       "\t"             4     c_3              ""
5  SQLCHAR         0       41      "!!!\r\r\n"      5     c_4              ""

Mapování datových polí na sloupce tabulky

Formátový soubor vytvořený pomocí bcp popisuje všechny sloupce tabulky v pořadí. Můžete upravit soubor formátu tak, aby změnil pořadí sloupců tabulky nebo některé z nich vynechal. Formátový soubor můžete přizpůsobit datovému souboru, jehož pole se nemapuje přímo na sloupce tabulky. Další informace najdete v následujících článcích: