Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
SQL Server poskytuje schéma XML, které definuje syntaxi pro zápis souborů formátu XML pro hromadný import dat do tabulky SQL Serveru. Soubory formátu XML musí dodržovat toto schéma, které je definováno v jazyce XSDL (XML Schema Definition Language). 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.
Soubor ve formátu XML můžete použít s příkazem bcp, BULK INSERT příkazem nebo INSERT ... SELECT * FROM OPENROWSET(BULK...) příkazem. Příkaz bcp umožňuje automaticky vygenerovat soubor formátu XML pro tabulku; Další informace naleznete v nástroji bcp.
Pro hromadný export a import jsou podporovány dva typy formátových souborů: soubory jiného formátu než XML a soubory formátu XML. Soubory formátu XML poskytují flexibilní a výkonnou alternativu k souborům jiných formátů než XML. Informace o formátových souborech jiných než XML naleznete v tématu
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
Výhody souborů formátu XML
Soubory formátu XML jsou samopopisující, což usnadňuje čtení, vytváření a rozšiřování. Jsou čitelné pro člověka, což usnadňuje pochopení toho, jak se data interpretují během hromadných operací.
Soubory formátu XML obsahují datové typy cílových sloupců. Kódování XML jasně popisuje datové typy a datové prvky datového souboru a také mapování mezi datovými prvky a sloupci tabulky.
To umožňuje oddělit způsob znázornění dat v datovém souboru a datový typ přidružený ke každému poli v souboru. Pokud například datový soubor obsahuje znakovou reprezentaci dat, dojde ke ztrátě odpovídajícího typu sloupce SQL.
Soubor formátu XML umožňuje načíst pole, které obsahuje jeden velký datový typ objektu (LOB) z datového souboru.
Soubor formátu XML lze ještě vylepšit, ale zůstane kompatibilní s jeho dřívějšími verzemi. Přehlednost kódování XML navíc usnadňuje vytvoření více formátových souborů pro daný datový soubor. To je užitečné, pokud potřebujete namapovat všechna nebo některá datová pole na sloupce v různých tabulkách nebo zobrazeních.
Syntaxe XML je nezávislá na směru operace; to znamená, že syntaxe je stejná pro hromadný export a hromadný import.
Soubory formátu XML můžete použít k hromadnému importu dat do tabulek nebo nedělených zobrazení a k hromadnému exportu dat.
Specifikace cílové tabulky je pro funkci OPENROWSET(BULK...) volitelná. Je to proto, že funkce spoléhá na soubor formátu XML ke čtení dat z datového souboru.
Poznámka:
Cílová tabulka je nezbytná pomocí příkazu bcp a BULK INSERT příkazu, který k převodu typu používá sloupce cílové tabulky.
Struktura souborů formátu XML
Podobně jako soubor formátu XML definuje soubor formátu XML formát a strukturu datových polí v datovém souboru a mapuje tato datová pole na sloupce v jedné cílové tabulce.
Soubor formátu XML má dvě hlavní komponenty a <RECORD><ROW>:
<RECORD>popisuje data, která jsou uložená v datovém souboru.Každý
<RECORD>prvek obsahuje sadu jednoho nebo více<FIELD>prvků. Tyto prvky odpovídají polím v datovém souboru. Základní syntaxe je následující:<RECORD> <FIELD .../> [ ...n ] </RECORD>Každý
<FIELD>prvek popisuje obsah konkrétního datového pole. Pole lze mapovat pouze na jeden sloupec v tabulce. Ne všechna pole musí být namapovaná na sloupce.Pole v datovém souboru může být buď s pevnou nebo proměnlivou délkou, nebo ukončeným znakem. Hodnota pole může být reprezentována jako: znak (pomocí jednobajtů reprezentace), široký znak (s reprezentací unicode 2 bajtů), nativní formát databáze nebo název souboru. Pokud je hodnota pole reprezentována jako název souboru, název souboru odkazuje na soubor, který obsahuje hodnotu sloupce BLOB v cílové tabulce.
<ROW>popisuje, jak vytvořit datové řádky z datového souboru při importu dat ze souboru do tabulky SQL Serveru.Prvek
<ROW>obsahuje sadu<COLUMN>prvků. Tyto prvky odpovídají sloupcům tabulky. Základní syntaxe je následující:<ROW> <COLUMN .../> [ ...n ] </ROW>Každý
<COLUMN>prvek lze mapovat pouze na jedno pole v datovém souboru. Pořadí<COLUMN>prvků v elementu<ROW>definuje pořadí, ve kterém je hromadná operace vrací. Soubor formátu XML přiřadí každému prvku<COLUMN>místní název, který nemá žádný vztah ke sloupci v cílové tabulce hromadné operace importu.
Syntaxe schématu pro soubory formátu XML
Tato část obsahuje souhrn prvků a atributů schématu XML pro soubory formátu XML. Syntaxe souboru formátu je nezávislá na směru operace; to znamená, že syntaxe je stejná pro hromadný export a hromadný import. Tato část také bere v úvahu, jak hromadný import používá prvky <ROW> a <COLUMN> a jak vložit hodnotu xsi:type elementu do datové sady.
Pokud chcete zjistit, jak syntaxe odpovídá skutečným souborům formátu XML, podívejte se na ukázkové soubory formátu XML.
Poznámka:
Formátový soubor můžete upravit, abyste mohli hromadně importovat z datového souboru, ve kterém se číslo nebo pořadí polí liší od počtu a/nebo pořadí sloupců tabulky. Další informace najdete v tématu Formátovat soubory pro import nebo export dat (SQL Server).
Základní syntaxe schématu XML
Tyto příkazy syntaxe zobrazují pouze prvky (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>a ) a <COLUMN>jejich základní atributy.
Poznámka:
Další atributy přidružené k hodnotě xsi:type v <FIELD> prvku nebo prvku <COLUMN> jsou popsány dále v tomto článku.
Prvky schématu
Tato část shrnuje účel každého prvku, který schéma XML definuje pro soubory formátu XML. Atributy jsou popsány v samostatných částech dále v tomto článku.
<BCPFORMAT>Element format-file, který definuje strukturu záznamů daného datového souboru a jeho korespondenci se sloupci řádku tabulky v tabulce.
<RECORD .../>Definuje komplexní prvek obsahující jeden nebo více
<FIELD>prvků. Pořadí, ve kterém jsou pole deklarována ve formátu souboru, je pořadí, ve kterém se tato pole zobrazují v datovém souboru.<FIELD .../>Definuje pole v datovém souboru, které obsahuje data. Atributy tohoto prvku jsou popsány v atributech elementu
<FIELD>dále v tomto článku.<ROW .../>Definuje komplexní prvek obsahující jeden nebo více
<COLUMN>prvků. Pořadí<COLUMN>prvků je nezávislé na pořadí<FIELD>prvků vRECORDdefinici. Spíše pořadí prvků<COLUMN>v souboru formátu určuje pořadí sloupců výsledné sady řádků. Datová pole jsou načtena v pořadí, ve kterém jsou odpovídající<COLUMN>prvky deklarovány v elementu<COLUMN>. Další informace naleznete v části Jak hromadný import používá<ROW>element, dále v tomto článku.<COLUMN>Definuje sloupec jako prvek (
<COLUMN>). Každý<COLUMN>prvek odpovídá elementu<FIELD>(jehož ID je zadáno vSOURCEatributu elementu<COLUMN>). Atributy tohoto prvku jsou popsány v atributech elementu<COLUMN>dále v tomto článku. Viz také, jak hromadný import používá<COLUMN>element, dále v tomto článku.</BCPFORMAT>Vyžaduje se k ukončení formátu souboru.
Atributy elementu <FIELD>
Tato část popisuje atributy elementu <FIELD> , které jsou shrnuty v následující syntaxi schématu:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Každý <FIELD> prvek je nezávislý na ostatních. Pole je popsáno z hlediska následujících atributů:
| Atribut FIELD | Popis | Volitelný/ Povinné |
|---|---|---|
| ID="fieldID" | Určuje logický název pole v datovém souboru. ID pole je klíč použitý k odkazování na pole. <ID POLE="fieldID" /> mapuje na <SLOUPEC ZDROJ="fieldID" /> |
Povinné |
| xsi:type="fieldType" | Jedná se o konstruktor XML (používaný jako atribut), který identifikuje typ instance elementu. Hodnota fieldType určuje, které z volitelných atributů , které potřebujete v dané instanci. | Povinné (v závislosti na datovém typu) |
| LENGTH="n" | Tento atribut definuje délku instance datového typu s pevnou délkou. Hodnota n musí být kladné celé číslo. |
Volitelné, pokud je tato xsi:type hodnota nepožadována |
| PREFIX_LENGTH="p" | Tento atribut definuje délku předpony pro reprezentaci binárních dat. Hodnota PREFIX_LENGTH, p, musí být jedna z následujících hodnot: 1, 2, 4, nebo 8. |
Volitelné, pokud je tato xsi:type hodnota nepožadována |
| MAX_LENGTH="m" | Tento atribut je maximální počet bajtů, které lze uložit do daného pole. Bez cílové tabulky není známá maximální délka sloupce. Atribut MAX_LENGTH omezuje maximální délku sloupce výstupního znaku a omezuje úložiště přidělené hodnotě sloupce. To je obzvláště výhodné při použití možnosti funkce OPENROWSETBULK v klauzuli SELECT FROM.Hodnota m musí být kladné celé číslo. Ve výchozím nastavení je maximální délka 8 000 znaků pro znakový sloupec a 4 000 znaků pro sloupec nchar . |
Volitelný |
| COLLATION="collationName" |
COLLATION je povolena pouze pro pole znaků. Seznam názvů kolace SQL Serveru najdete v tématu Název kolace SQL Serveru. |
Volitelný |
| TERMINATOR="terminator" | Tento atribut určuje ukončovací znak datového pole. Ukončovací znak může být libovolný znak. Ukončovací znak musí být jedinečný znak, který není součástí dat. Ve výchozím nastavení je ukončovacím znakem pole znak tabulátoru (reprezentovaný jako \t). Chcete-li reprezentovat značku odstavce, použijte \r\n. |
Tento atribut se používá pouze s xsi:type daty znaků, které vyžadují tento atribut. |
xsi:typehodnoty elementu<FIELD>Hodnota
xsi:typeje konstruktor XML (používaný jako atribut), který identifikuje datový typ instance elementu. Další informace naleznete v tématu Vložení hodnoty xsi:type do oddílu datové sady v tomto článku.Hodnota
xsi:typeelementu<FIELD>podporuje následující datové typy.<FIELD>xsi:typehodnotyPožadované atributy XML
pro datový typVolitelné atributy XML
pro datový typNativeFixedLENGTHŽádné. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONDalší informace o datových typech SQL Serveru naleznete v tématu Datové typy.
Atributy elementu
<COLUMN>Tato část popisuje atributy elementu
<COLUMN>, které jsou shrnuty v následující syntaxi schématu:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Pole se mapuje na sloupec v cílové tabulce pomocí následujících atributů:
Atribut COLUMN Popis Volitelný/
PovinnéSOURCE="fieldID" Určuje ID pole, které je mapováno na sloupec.
<COLUMN SOURCE=fieldID"/> mapuje na <FIELD ID=fieldID"/>Povinné NAME="columnName" Určuje název sloupce v sadě řádků reprezentovaný formátovacím souborem. Tento název sloupce slouží k identifikaci sloupce v sadě výsledků a nemusí odpovídat názvu sloupce použitému v cílové tabulce. Povinné xsi:type="ColumnType" Jedná se o konstruktor XML (používaný jako atribut), který identifikuje datový typ instance elementu. Hodnota ColumnType určuje, které volitelné atributy potřebujete v dané instanci.
Poznámka: Možné hodnoty ColumnType a jejich přidružených atributů jsou uvedeny v<COLUMN>tabulce elementů v xsi:type hodnoty oddílu <elementu COLUMN>.Volitelný LENGTH="n" Definuje délku instance datového typu s pevnou délkou. LENGTHse používá pouze v případech, kdyxsi:typese jedná o datový typ řetězce.
Hodnota n musí být kladné celé číslo.Volitelné (k dispozici pouze v případě, že xsi:typese jedná o datový typ řetězce)PRECISION="n" Určuje počet číslic v čísle. Například číslo 123,45 má přesnost 5.
Hodnota musí být kladné celé číslo.Volitelné (k dispozici pouze v případě xsi:type, že se jedná o datový typ s proměnným číslem)SCALE="int" Určuje počet číslic napravo od desetinné čárky v čísle. Například číslo 123,45 má měřítko 2.
Hodnota musí být celé číslo.Volitelné (k dispozici pouze v případě xsi:type, že se jedná o datový typ s proměnným číslem)NULLABLE={ "ANO" | "NE" } Určuje, zda sloupec může předpokládat NULLhodnoty. Tento atribut je nezávislý naFIELDS. Pokud sloupec není nulovatelný a pole určujeNULL(když nezadáte žádnou hodnotu), dojde k chybě za běhu.
AtributNULLABLEse používá pouze v případě, že provedete prostýSELECT FROM OPENROWSET(BULK...)příkaz.Volitelné (dostupné pro libovolný datový typ)
xsi:typehodnoty elementu<COLUMN>Hodnota
xsi:typeje konstruktor XML (používaný jako atribut), který identifikuje datový typ instance elementu. Informace o použití možnosti "Vloženíxsi:typehodnoty do datové sady" najdete dále v této části.Element
<COLUMN>podporuje nativní datové typy SQL následujícím způsobem:Typ kategorie <COLUMN>datové typyPožadované atributy XML
pro datový typVolitelné atributy XML
pro datový typFixed SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4,SQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANT, aSQLUNIQUEIDŽádné. NULLABLEČíslo proměnné SQLDECIMALaSQLNUMERICŽádné. NULLABLE,PRECISIONSCALEProměnné datum a čas SQLDATETIME2,SQLTIMESQLDATETIMEOFFSETŽádné. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTaSQLUDTŽádné. NULLABLEZnak LOB SQLNTEXTŽádné. NULLABLEBinární řetězec SQLBINARYaSQLVARYBINŽádné. NULLABLE,LENGTHŘetězec znaků SQLCHAR,SQLVARYCHAR,SQLNCHARaSQLNVARCHARŽádné. NULLABLE,LENGTHDůležité
K hromadnému exportu nebo importu dat SQLXML použijte jeden z následujících datových typů v souboru formátu:
SQLCHARneboSQLVARYCHAR(data se odesílají na stránce kódu klienta nebo na znakové stránce odvozené kolací)SQLNCHARneboSQLNVARCHAR(data se odesílají jako Unicode) neboSQLBINARYSQLVARYBIN(data se odesílají bez jakéhokoli převodu).Další informace o datových typech SQL Serveru naleznete v tématu Datové typy.
Jak hromadný import používá <ROW> element
Prvek <ROW> je ignorován v některých kontextech. Zda prvek <ROW> ovlivňuje operaci hromadného importu, závisí na způsobu, jakým je operace prováděna.
Příkaz bcp
Když se data načtou do cílové tabulky, bcp komponentu
<ROW>ignoruje. Místo toho bcp načte data na základě typů sloupců cílové tabulky.Transact-SQL příkazy (poskytovatel hromadné řady
BULK INSERTaOPENROWSET)Při hromadném importu dat do tabulky Transact-SQL příkazy používají komponentu
<ROW>ke generování vstupní sady řádků. Také Transact-SQL příkazy provádějí odpovídající převody typů na základě typů sloupců zadaných v<ROW>a odpovídajících sloupců v cílové tabulce. Pokud existuje neshoda mezi typy sloupců zadanými ve formátu souboru a v cílové tabulce, dojde k převodu dalšího typu. Dodatečný převod typu může vést k určité nesrovnalosti (tj. ztrátě přesnosti) v chování poskytovatele hromadné sady řádkůBULK INSERT, ve srovnání sOPENROWSETa bcp.Informace v elementu
<ROW>umožňují vytvořit řádek bez nutnosti dalších informací. Z tohoto důvodu můžete sadu řádků vygenerovat pomocíSELECTpříkazu (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).Klauzule
OPENROWSET BULKvyžaduje formátový soubor. Převod z datového typu pole na datový typ sloupce je k dispozici pouze se souborem formátu XML.
Jak hromadný import používá <COLUMN> element
Pro hromadný import dat do tabulky <COLUMN> prvky ve formátu souboru mapují pole datového souboru na sloupce tabulky zadáním:
Pozice každého pole v řádku v datovém souboru.
Typ sloupce, který slouží k převodu datového typu pole na požadovaný datový typ sloupce.
Pokud není žádný sloupec namapován na pole, pole se do vygenerovaných řádků nezkopíruje. Toto chování umožňuje datovému souboru generovat řádky s různými sloupci (v různých tabulkách).
Podobně platí, že pokud chcete hromadně exportovat data z tabulky, každý <COLUMN> v souboru formátu mapuje sloupec ze vstupního řádku tabulky na odpovídající pole ve výstupním datovém souboru.
xsi:type Vložení hodnoty do datové sady
Pokud je dokument XML ověřen prostřednictvím jazyka XSD (Xml Schema Definition), xsi:type hodnota není vložena do datové sady. Informace však můžete vložit xsi:type do datové sady načtením souboru formátu XML do dokumentu XML (například myDoc), jak je znázorněno v následujícím fragmentu kódu:
...;
myDoc.LoadXml(xmlFormat);
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");
for (int i = 0; i < ColumnList.Count; i++)
{
Console.Write($"COLUMN: xsi:type={ColumnList[i].Attributes["type",
"http://www.w3.org/2001/XMLSchema-instance"].Value}\n");
}
Ukázkové soubory formátu XML
Tato část obsahuje informace o použití souborů formátu XML v různých případech, včetně příkladu Adventure Works.
Poznámka:
V datových souborech zobrazených v následujících příkladech <tab> označuje znak tabulátoru v datovém souboru a <return> označuje návrat na začátek řádku.
Příklady ilustrují klíčové aspekty použití souborů formátu XML následujícím způsobem:
- Seřaďte pole znakových dat stejně jako sloupce tabulky
- Řazení datových polí a sloupců tabulky odlišně
- Vynechání datového pole
- Mapování různých typů polí na sloupce
- Mapování dat XML na tabulku
- Import polí s pevnou délkou nebo pevnou šířkou
- Další příklady
Informace o tom, jak vytvořit formátové soubory, naleznete v tématu Vytvoření formátu souboru pomocí bcp (SQL Server).
A. Seřaďte datová pole znaků stejně jako sloupce tabulky.
Následující příklad ukazuje soubor formátu XML, který popisuje datový soubor obsahující tři pole znakových dat. Formátový soubor mapuje datový soubor na tabulku, která obsahuje tři sloupce. Datová pole odpovídají sloupcům tabulky 1:1.
-
Tabulka (řádek):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datový soubor (záznam):
Age<tab>FirstName<tab>LastName<return>
Následující soubor formátu XML čte z datového souboru do tabulky.
V elementu <RECORD> soubor formátu představuje datové hodnoty ve všech třech polích jako data znaků. Pro každé pole TERMINATOR atribut označuje ukončovací znak, který následuje za datová hodnota.
Datová pole odpovídají sloupcům tabulky 1:1. Formátový soubor v elementu <ROW> mapuje sloupec Age na první pole, sloupec FirstName na druhé pole a sloupec LastName na třetí pole.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Poznámka:
Ekvivalentní AdventureWorks2025 příklad najdete v tématu Vytvoření formátu souboru s bcp (SQL Server).
B. Řazení datových polí a sloupců tabulky odlišně
Následující příklad ukazuje soubor formátu XML, který popisuje datový soubor obsahující tři pole znakových dat. Formátový soubor mapuje datový soubor na tabulku, která obsahuje tři sloupce uspořádané jinak než pole datového souboru.
-
Tabulka (řádek):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datový soubor (záznam):
Age<tab>FirstName<tab>LastName<return>
V elementu <RECORD> soubor formátu představuje datové hodnoty ve všech třech polích jako data znaků.
Formátový soubor v elementu <ROW> mapuje sloupec Age na první pole, sloupec FirstName na třetí pole a sloupec LastName na druhé pole.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Poznámka:
Ekvivalentní AdventureWorks2025 příklad najdete v tématu Použití formátu souboru k mapování sloupců tabulky na pole datových souborů (SQL Server).
C. Vynechání datového pole
Následující příklad ukazuje soubor formátu XML, který popisuje datový soubor obsahující čtyři pole znakových dat. Formátový soubor mapuje datový soubor na tabulku, která obsahuje tři sloupce. Druhé datové pole neodpovídá žádnému sloupci tabulky.
-
Tabulka (řádek):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datový soubor (záznam):
Age<tab>FirstName<tab>LastName<return>
V elementu <RECORD> soubor formátu představuje datové hodnoty ve všech čtyřech polích jako data znaků. Pro každé pole TERMINATOR atribut označuje ukončovací znak, který následuje za datová hodnota.
V elementu <ROW> soubor formátu mapuje sloupec Age na první pole, sloupec FirstName na třetí pole a sloupec LastName na čtvrté pole.
<?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="\t"
MAX_LENGTH="12" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="10"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t"
MAX_LENGTH="20"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n"
MAX_LENGTH="30"
COLLATION="SQL_Latin1_General_CP1_CI_AS" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT" />
<COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR" />
<COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR" />
</ROW>
</BCPFORMAT>
Poznámka:
Ekvivalentní AdventureWorks2025 příklad najdete v tématu Použití formátu souboru k přeskočení datového pole (SQL Server).
D. Mapování <FIELD> xsi:type na <COLUMN> xsi:type
Následující příklad ukazuje různé typy polí a jejich mapování na sloupce.
<?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 xsi:type="CharTerm" ID="C1" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="CharFixed" ID="C2" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t"
MAX_LENGTH="4" />
<FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10"
COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2"
MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS" />
<FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4" />
</RECORD>
<ROW>
<COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT" />
<COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR"
LENGTH="16" NULLABLE="NO" />
<COLUMN SOURCE="C3" NAME="LastName" />
<COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY" />
<COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE" />
<COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT" />
<COLUMN SOURCE="C7" NAME="Interest" xsi:type="SQLDECIMAL"
PRECISION="5" SCALE="3" />
</ROW>
</BCPFORMAT>
E. Mapování dat XML na tabulku
Následující příklad vytvoří prázdnou tabulku se dvěma sloupci (t_xml), ve které se první sloupec mapuje na int datový typ a druhý sloupec se mapuje na xml datový typ.
CREATE TABLE t_xml (c1 INT, c2 XML);
Následující soubor formátu XML by načetl datový soubor do tabulky t_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="NativePrefix" PREFIX_LENGTH="1" />
<FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR" />
</ROW>
</BCPFORMAT>
F. Import polí s pevnou délkou nebo pevnou šířkou
Následující příklad popisuje pevná pole 10 nebo 6 znaky každého. Formátovací soubor představuje tyto délky a šířky polí jako LENGTH="10" a LENGTH="6"v uvedeném pořadí. Každý řádek datových souborů končí kombinací návrat vozíku a znak nového řádku, <CR><LF>, kterou formátový soubor představuje jako TERMINATOR="\r\n".
<?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="CharFixed" LENGTH="10" />
<FIELD ID="2" xsi:type="CharFixed" LENGTH="6" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
<COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
</ROW>
</BCPFORMAT>
Další příklady
Další příklady souborů formátu jiného formátu než XML a souborů formátu XML najdete v následujících článcích:
- 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
Související úkoly
- Vytvoření formátu souboru pomocí bcp (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