Sdílet prostřednictvím


Formátování souborů pro import nebo export dat (SQL Server)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAnalytics Platform System (PDW)

Při hromadném importu dat do tabulky SQL Serveru nebo hromadného exportu dat z tabulky můžete pomocí formátového souboru uložit všechny informace o formátu potřebné k hromadnému exportu nebo hromadnému importu dat. To zahrnuje informace o formátu pro každé pole v datovém souboru vzhledem k této tabulce.

SQL Server podporuje dva typy formátových souborů: formáty XML a soubory jiného formátu než XML. Formátové soubory jiného formátu než XML i soubory formátu XML obsahují popisy všech polí v datovém souboru a soubory formátu XML také obsahují popisy odpovídajících sloupců tabulky. Obecně platí, že soubory formátu XML a jiné než XML jsou zaměnitelné. Doporučujeme však použít syntaxi XML pro nové formátové soubory, protože poskytují několik výhod oproti souborům bez formátu XML. Další informace naleznete v tématu Soubory formátu XML (SQL Server).

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.

Výhody formátovaných souborů

Formátové soubory poskytují flexibilní systém pro zápis datových souborů, které vyžadují minimální nebo žádné úpravy, aby vyhovovaly jiným datovým formátům nebo ke čtení datových souborů z jiného softwaru.

Hromadný import dat můžete bez nutnosti přidávat nebo odstraňovat nepotřebná data nebo měnit pořadí existujících dat v datovém souboru. Formátovací soubory můžou být užitečné, když existuje neshoda mezi poli v datovém souboru a sloupci v tabulce.

Příklady formátovaných souborů

Následující příklady ukazují rozložení souboru jiného formátu než XML a souboru formátu XML. Tyto soubory formátu odpovídají HumanResources.myTeam tabulce v AdventureWorks2025 ukázkové databázi. Tato tabulka obsahuje čtyři sloupce: EmployeeID, Name, Titlea ModifiedDate.

Poznámka:

Informace o této tabulce a jejím vytvoření naleznete v tématu HumanResources.myTeam sample table (SQL Server).

A. Použití souboru jiného formátu než XML

Následující soubor formátu jiného formátu než XML používá nativní datový formát SQL Serveru pro HumanResources.myTeam tabulku. Tento formátový soubor byl vytvořen pomocí následujícího bcp příkazu.

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T

Příkaz bcp se ve výchozím nastavení nastaví na místní výchozí instanci SQL Serveru s ověřováním systému Windows. Podle potřeby můžete zadat další instance a přihlašovací údaje. Další informace najdete v nástroji bcp. Pokud chcete například zadat vzdálený server pojmenovaný jako instance s použitím ověřování systému Windows, použijte:

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T -S servername/instancename

Obsah tohoto souboru formátu je následující, počínaje hlavním číslem verze SYSTÉMU SQL Server a informacemi o metadatech tabulky.

14.0
4
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS

Další informace naleznete v tématu Použití souborů formátu JINÉ NEŽ XML (SQL Server).

B. Použití souboru formátu XML

Následující soubor formátu XML používá nativní datový formát SQL Serveru pro HumanResources.myTeam tabulku. Tento formátový soubor byl vytvořen pomocí následujícího bcp příkazu.

bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.xml -x -n -T

Formát souboru obsahuje:

<?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="NativePrefix" LENGTH="1"/>
  <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="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>

Další informace naleznete v tématu Soubory formátu XML (SQL Server).

Kdy se vyžaduje formátový soubor?

Formátovací soubory se obvykle vyžadují za následujících okolností:

  • Když použijete příkaz INSERT ... SELECT * FROM OPENROWSET(BULK...) .

  • Pro složité situace hromadného importu pomocí bcp nebo BULK INSERT.

  • Stejný datový soubor se používá jako zdroj pro více tabulek, které mají různá schémata.

  • Datový soubor má odlišný počet polí než má cílová tabulka sloupců; například:

    • Cílová tabulka obsahuje alespoň jeden sloupec, pro který je definována výchozí hodnota nebo NULL je povolená.
    • Uživatelé nemají SELECT/INSERT oprávnění k jednomu nebo více sloupcům v tabulce.
    • Jeden datový soubor se používá se dvěma nebo více tabulkami, které mají různá schémata.
  • Pořadí sloupců se u datového souboru a tabulky liší.

  • Koncové znaky nebo délky předpony se liší mezi sloupci datového souboru.

Poznámka:

Pokud není k dispozici soubor formátu, a příkaz bcp určuje přepínač formátu dat (-n, -c, -w nebo -N) nebo operace BULK INSERT určuje možnost DATAFILETYPE, použije se zadaný datový formát jako výchozí metoda interpretace polí datového souboru.