Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Server innehåller ett XML-schema som definierar syntax för att skriva XML-formatfiler som ska användas för massimport av data till en SQL Server-tabell. XML-formatfiler måste följa det här schemat, som definieras i XML Schema Definition Language (XSDL). XML-formatfiler stöds endast när SQL Server-verktyg installeras tillsammans med SQL Server Native Client.
Du kan använda en XML-formatfil med ett bcp-kommando , BULK INSERT -instruktion eller INSERT ... SELECT * FROM OPENROWSET(BULK...) -uttryck. Med bcp-kommandot kan du automatiskt generera en XML-formatfil för en tabell. Mer information finns i bcp-verktyget.
Två typer av formatfiler stöds för massexport och import: icke-XML-formatfiler och XML-formatfiler. XML-formatfiler är ett flexibelt och kraftfullt alternativ till filer som inte är XML-format. Information om filer som inte är XML-format finns i Använda filer som inte är XML-format (SQL Server).
Anmärkning
Den här syntaxen, inklusive massinfogning, stöds inte i Azure Synapse Analytics. I Azure Synapse Analytics och andra molndatabasplattformsintegreringar utför du dataflytt via COPY-instruktionen i Azure Data Factory eller med hjälp av T-SQL-instruktioner som COPY INTO och PolyBase.
Fördelar med XML-formatfiler
XML-formatfiler är självbeskrivande, vilket gör dem enkla att läsa, skapa och utöka. De är läsbara för människor, vilket gör det enkelt att förstå hur data tolkas under massåtgärder.
XML-formatfiler innehåller datatyperna för målkolumner. XML-kodningen beskriver tydligt datatyperna och dataelementen i datafilen och även mappningen mellan dataelement och tabellkolumner.
Detta möjliggör separation mellan hur data representeras i datafilen och vilken datatyp som är associerad med varje fält i filen. Om en datafil till exempel innehåller en teckenrepresentation av data går motsvarande SQL-kolumntyp förlorad.
En XML-formatfil gör det möjligt att läsa in ett fält som innehåller en enda stor objektdatatyp (LOB) från en datafil.
En XML-formatfil kan förbättras men förblir kompatibel med tidigare versioner. Dessutom underlättar tydligheten i XML-kodning skapandet av flera formatfiler för en viss datafil. Detta är användbart om du måste mappa alla eller vissa datafält till kolumner i olika tabeller eller vyer.
XML-syntaxen är oberoende av åtgärdens riktning. Syntaxen är alltså densamma för massexport och massimport.
Du kan använda XML-formatfiler för att massimportera data till tabeller eller icke-partitionerade vyer och massexportera data.
För funktionen OPENROWSET(BULK...) är det valfritt att ange en måltabell. Det beror på att funktionen förlitar sig på XML-formatfilen för att läsa data från en datafil.
Anmärkning
En måltabell krävs med bcp-kommandot och -instruktionen BULK INSERT , som använder måltabellkolumnerna för att utföra typkonverteringen.
Strukturen för XML-formatfiler
Precis som en icke-XML-formatfil definierar en XML-formatfil formatet och strukturen för datafälten i en datafil och mappar dessa datafält till kolumner i en enda måltabell.
En XML-formatfil har två huvudkomponenter och <RECORD><ROW>:
<RECORD>beskriver data som de lagras i datafilen.Varje
<RECORD>element innehåller en uppsättning med ett eller flera<FIELD>element. Dessa element motsvarar fält i datafilen. Den grundläggande syntaxen är följande:<RECORD> <FIELD .../> [ ...n ] </RECORD>Varje
<FIELD>element beskriver innehållet i ett specifikt datafält. Ett fält kan bara mappas till en kolumn i tabellen. Alla fält behöver inte mappas till kolumner.Ett fält i en datafil kan ha en fast/variabel längd eller ett tecken som avslutas. Ett fältvärde kan representeras som: ett tecken (med en bytesrepresentation), ett brett tecken (med Unicode 2-bytesrepresentation), inbyggt databasformat eller ett filnamn. Om ett fältvärde representeras som ett filnamn pekar filnamnet på filen som innehåller värdet för en BLOB-kolumn i måltabellen.
<ROW>beskriver hur du konstruerar datarader från en datafil när data från filen importeras till en SQL Server-tabell.Ett
<ROW>element innehåller en uppsättning<COLUMN>element. Dessa element motsvarar tabellkolumner. Den grundläggande syntaxen är följande:<ROW> <COLUMN .../> [ ...n ] </ROW>Varje
<COLUMN>element kan endast mappas till ett fält i datafilen. Ordningen på elementen<COLUMN>i elementet<ROW>definierar i vilken ordning massåtgärden returnerar dem. XML-formatfilen tilldelar varje<COLUMN>element ett lokalt namn som inte har någon relation till kolumnen i måltabellen för en massimportåtgärd.
Schemasyntax för XML-formatfiler
Det här avsnittet innehåller en sammanfattning av elementen och attributen i XML-schemat för XML-formatfiler. Syntaxen för en formatfil är oberoende av åtgärdens riktning. Syntaxen är alltså densamma för massexport och massimport. I det här avsnittet beskrivs även hur massimport använder elementen <ROW> och <COLUMN> och hur värdet för ett element ska placeras xsi:type i en datauppsättning.
Information om hur syntaxen motsvarar faktiska XML-formatfiler finns i XML-exempelformatfiler.
Anmärkning
Du kan ändra en formatfil så att du kan massimportera från en datafil där fältens nummer och/eller ordning skiljer sig från antalet och/eller ordningen för tabellkolumner. Mer information finns i Formatera filer för att importera eller exportera data (SQL Server).
Grundläggande syntax för XML-schemat
Dessa syntaxinstruktioner visar endast elementen (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>och <COLUMN>) och deras grundläggande attribut.
Anmärkning
Ytterligare attribut som är associerade med värdet xsi:type för i ett <FIELD> eller <COLUMN> -element beskrivs senare i den här artikeln.
Elemente i schemat
Det här avsnittet sammanfattar syftet med varje element som XML-schemat definierar för XML-formatfiler. Attributen beskrivs i separata avsnitt senare i den här artikeln.
<BCPFORMAT>Formatfilelementet som definierar poststrukturen för en viss datafil och dess motsvarighet till kolumnerna i en tabellrad.
<RECORD .../>Definierar ett komplext element som innehåller ett eller flera
<FIELD>element. Ordningen i vilken fälten deklareras i formatfilen är den ordning i vilken fälten visas i datafilen.<FIELD .../>Definierar ett fält i datafilen som innehåller data. Attributen för det här elementet beskrivs i Attribut för elementet senare i den
<FIELD>här artikeln.<ROW .../>Definierar ett komplext element som innehåller ett eller flera
<COLUMN>element. Ordningen på elementen<COLUMN>är oberoende av<FIELD>ordningen på elementen i enRECORDdefinition. I stället avgör ordningen på elementen<COLUMN>i en formatfil kolumnordningen för den resulterande raduppsättningen. Datafält läses in i den ordning motsvarande<COLUMN>element deklareras i elementet<COLUMN>. Mer information finns i Hur massimport använder elementet<ROW>senare i den här artikeln.<COLUMN>Definierar en kolumn som ett element (
<COLUMN>). Varje<COLUMN>element motsvarar ett<FIELD>element (vars ID anges iSOURCEelementets<COLUMN>attribut). Attributen för det här elementet beskrivs i Attribut för elementet senare i den<COLUMN>här artikeln. Se även Hur massimport använder elementet<COLUMN>senare i den här artikeln.</BCPFORMAT>Krävs för att avsluta formatfilen.
Attributen hos <FIELD>-elementet
I det här avsnittet beskrivs elementets <FIELD> attribut, som sammanfattas i följande schemasyntax:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Varje <FIELD> element är oberoende av de andra. Ett fält beskrivs i termer av följande attribut:
| FIELD-attribut | Beskrivning | Valfri/ Krävs |
|---|---|---|
| ID="fieldID" | Anger det logiska namnet på fältet i datafilen. ID:t för ett fält är nyckeln som används för att referera till fältet. <FIELD ID="fieldID" /> maps to <COLUMN SOURCE="fieldID" /> |
Krävs |
| xsi:type="fieldType" | Det här är en XML-konstruktion (används som ett attribut) som identifierar typen av instans av elementet. Värdet för fieldType avgör vilka av de valfria attribut du behöver i en viss instans. | Krävs (beroende på datatyp) |
| LENGTH="n" | Det här attributet definierar längden för en instans av en datatyp med fast längd. Värdet för n måste vara ett positivt heltal. |
Valfritt om det inte krävs av xsi:type värdet |
| PREFIX_LENGTH="p" | Det här attributet definierar prefixets längd för en binär datarepresentation. , PREFIX_LENGTHp, måste vara något av följande värden: 1, 2, 4, eller 8. |
Valfritt om det inte krävs av xsi:type värdet |
| MAX_LENGTH="m" | Det här attributet är det maximala antalet byte som kan lagras i ett visst fält. Utan en måltabell är kolumnens maxlängd inte känd. Attributet MAX_LENGTH begränsar den maximala längden på en utdatateckenkolumn, vilket begränsar det allokerade lagringsutrymmet för kolumnvärdet. Detta är särskilt praktiskt när du använder OPENROWSET funktionens BULK val i en SELECT FROM sats.Värdet för m måste vara ett positivt heltal. Som standard är den maximala längden 8 000 tecken för en teckenkolumn och 4 000 tecken för en nchar-kolumn . |
Valfritt |
| COLLATION="collationName" |
COLLATION tillåts endast för teckenfält. En lista över SQL Server-sorteringsnamn finns i SQL Server-sorteringsnamn. |
Valfritt |
| TERMINATOR="terminator" | Det här attributet anger avslutaren för ett datafält. Terminatorn kan vara vilket tecken som helst. Terminatorn måste vara ett unikt tecken som inte är en del av den använda datan. Som standard är fältavslutaren fliktecknet (representeras som \t). Om du vill representera ett styckemärke använder du \r\n. |
Det här attributet används endast med en xsi:type av teckendata, och kräver därför det här attributet. |
xsi:typeelementets<FIELD>värdenVärdet
xsi:typeär en XML-konstruktion (används som ett attribut) som identifierar datatypen för en instans av ett element. Mer information finns i Placera värdet xsi:type i ett datauppsättningsavsnitt i den här artikeln.Värdet
xsi:typeför elementet<FIELD>stöder följande datatyper.<FIELD>xsi:typevärdenObligatoriska XML-attribut
för datatypValfria XML-attribut
för datatypNativeFixedLENGTHIngen. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONMer information om SQL Server-datatyper finns i Datatyper.
Elementets
<COLUMN>attributI det här avsnittet beskrivs elementets
<COLUMN>attribut, som sammanfattas i följande schemasyntax:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Ett fält mappas till en kolumn i måltabellen med hjälp av följande attribut:
KOLUMN-attribut Beskrivning Valfri/
KrävsSOURCE="fieldID" Anger ID för fältet som mappas till kolumnen.
<COLUMN SOURCE=fieldID"/> mappar till <FIELD ID=fieldID"/>Krävs NAME="columnName" Anger namnet på kolumnen i raduppsättningen som representeras av formatfilen. Det här kolumnnamnet används för att identifiera kolumnen i resultatuppsättningen och behöver inte motsvara kolumnnamnet som används i måltabellen. Krävs xsi:type="ColumnType" Det här är en XML-konstruktion (används som ett attribut) som identifierar datatypen för elementets instans. Värdet för ColumnType avgör vilka av de valfria attribut du behöver i en viss instans.
Not: Möjliga värden för ColumnType och deras associerade attribut visas i elementtabellen<COLUMN>i xsi:type-värdena i <avsnittet COLUMN-element>.Valfritt LENGTH="n" Definierar längden för en instans av en datatyp med fast längd. LENGTHanvänds endast närxsi:typeär en strängdatatyp.
Värdet för n måste vara ett positivt heltal.Valfritt (endast tillgängligt om xsi:typeär en strängdatatyp)PRECISION="n" Anger antalet siffror i ett tal. Till exempel har talet 123,45 en precision på 5.
Värdet måste vara ett positivt heltal.Valfritt (endast tillgängligt om xsi:typedatatypen är ett variabelnummer)SCALE="int" Anger antalet siffror till höger om decimaltecknet i ett tal. Till exempel har talet 123,45 en skala på 2.
Värdet måste vara ett heltal.Valfritt (endast tillgängligt om xsi:typedatatypen är ett variabelnummer)NULLABLE={ "JA" | "NEJ" } Anger om en kolumn kan anta NULLvärden. Det här attributet är oberoende avFIELDS. Men om en kolumn inte är nullbar och fältet angerNULL(genom att inte ange något värde), resulterar ett körningsfel.
AttributetNULLABLEanvänds endast om du gör en vanligSELECT FROM OPENROWSET(BULK...)instruktion.Valfritt (tillgängligt för alla datatyper)
xsi:typeelementets<COLUMN>värdenVärdet
xsi:typeär en XML-konstruktion (används som ett attribut) som identifierar datatypen för en instans av ett element. Mer information om hur du använder "Placera värdetxsi:typei en datauppsättning" finns senare i det här avsnittet.Elementet
<COLUMN>stöder inbyggda SQL-datatyper enligt följande:Typkategori <COLUMN>datatyperObligatoriska XML-attribut
för datatypValfria XML-attribut
för datatypÅtgärdad (based on the most likely sense of "Fixed" in common contexts where it means 'repaired' or 'resolved'). SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4, ,SQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANTochSQLUNIQUEIDIngen. NULLABLEVariabelnummer SQLDECIMALochSQLNUMERICIngen. NULLABLE,PRECISION,SCALEVariabeldatum och -tid SQLDATETIME2,SQLTIME,SQLDATETIMEOFFSETIngen. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTochSQLUDTIngen. NULLABLECharacter LOB SQLNTEXTIngen. NULLABLEBinär sträng SQLBINARYochSQLVARYBINIngen. NULLABLE,LENGTHTeckensträng SQLCHAR,SQLVARYCHAR,SQLNCHARochSQLNVARCHARIngen. NULLABLE,LENGTHViktigt!
Om du vill massexportera eller importera SQLXML-data använder du någon av följande datatyper i formatfilen:
SQLCHARellerSQLVARYCHAR(data skickas på klientkodsidan eller på den kodsida som är underförstådd av sorteringen),SQLNCHARellerSQLNVARCHAR(data skickas som Unicode) ellerSQLBINARYSQLVARYBIN(data skickas utan konvertering).Mer information om SQL Server-datatyper finns i Datatyper.
Hur massimport använder elementet <ROW>
Elementet <ROW> ignoreras i vissa kontexter. Om elementet <ROW> påverkar en massimportåtgärd beror på hur åtgärden utförs:
Bcp-kommandot
När data läses in i en måltabell ignorerar bcp komponenten
<ROW>. I stället läser bcp in data baserat på kolumntyperna i måltabellen.Transact-SQL -instruktioner (
BULK INSERTochOPENROWSETmassraduppsättningsprovidern)När du massimporterar data till en tabell använder Transact-SQL-uttryck komponenten
<ROW>för att generera indataraduppsättningen. Dessutom utför Transact-SQL-instruktioner lämpliga typkonverteringar baserat på de kolumntyper som anges under<ROW>och motsvarande kolumn i måltabellen. Om det finns ett matchningsfel mellan kolumntyper som anges i formatfilen och i måltabellen sker en extra typkonvertering. Den här extra typkonverteringen kan leda till en viss avvikelse (dvs. en förlust av precision) i beteendet hosBULK INSERTellerOPENROWSETmassraduppsättningsprovidern jämfört med bcp.Informationen i elementet
<ROW>gör att en rad kan konstrueras utan ytterligare information. Därför kan du generera en raduppsättning med hjälp av enSELECT-instruktion (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).Satsen
OPENROWSET BULKkräver en formatfil. Konvertering från datatypen för fältet till datatypen för en kolumn är endast tillgängligt med en XML-formatfil.
Hur massimport använder elementet <COLUMN>
För massimport av data till en tabell mappar elementen <COLUMN> i en formatfil ett datafilfält till tabellkolumner genom att ange:
Positionen för varje fält i en rad i datafilen.
Kolumntypen, som används för att konvertera fältdatatypen till önskad kolumndatatyp.
Om ingen kolumn mappas till ett fält kopieras inte fältet till de genererade raderna. Med det här beteendet kan en datafil generera rader med olika kolumner (i olika tabeller).
För massexport av data från en tabell kartlägger varje <COLUMN> i formatfilen kolumnen från inmatningstabellraden till motsvarande fält i utdatafilen.
Placera värdet xsi:type i en datauppsättning
När ett XML-dokument verifieras via språket xsi:type XML-schemadefinition (XSD) placeras inte värdet i datauppsättningen. Du kan dock placera informationen xsi:type i datauppsättningen genom att läsa in XML-formatfilen i ett XML-dokument (till exempel myDoc), enligt följande kodfragment:
...;
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");
}
Exempel på XML-formatfiler
Det här avsnittet innehåller information om hur du använder XML-formatfiler i olika fall, inklusive ett Adventure Works-exempel.
Anmärkning
I de datafiler som visas i följande exempel <tab> anger ett fliktecken i en datafil och <return> anger en vagnretur.
Exemplen illustrerar viktiga aspekter av hur du använder XML-formatfiler på följande sätt:
- Sortera teckendatafält på samma sätt som tabellkolumner
- Sortera datafält och tabellkolumner på olika sätt
- Utelämna ett datafält
- Mappa olika typer av fält till kolumner
- Mappa XML-data till en tabell
- Importera fält med fast längd eller fast bredd
- Ytterligare exempel
Information om hur du skapar formatfiler finns i Skapa en formatfil med bcp (SQL Server).
A. Sortera teckendatafält på samma sätt som tabellkolumner
I följande exempel visas en XML-formatfil som beskriver en datafil som innehåller tre fält med teckendata. Formatfilen mappar datafilen till en tabell som innehåller tre kolumner. Datafälten motsvarar en-till-en med kolumnerna i tabellen.
-
Tabell (rad):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datafil (post):
Age<tab>FirstName<tab>LastName<return>
Följande XML-formatfil läser från datafilen till tabellen.
I elementet <RECORD> representerar formatfilen datavärdena i alla tre fälten som teckendata. För varje fält TERMINATOR anger attributet den avslutare som följer datavärdet.
Datafälten motsvarar varje kolumn i tabellen. I -elementet <ROW> mappar formatfilen kolumnen Age till det första fältet, kolumnen FirstName till det andra fältet och kolumnen LastName till det tredje fältet.
<?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>
Anmärkning
Ett motsvarande AdventureWorks2022 exempel finns i Skapa en formatfil med bcp (SQL Server).
B. Sortera datafält och tabellkolumner på olika sätt
I följande exempel visas en XML-formatfil som beskriver en datafil som innehåller tre fält med teckendata. Formatfilen mappar datafilen till en tabell som innehåller tre kolumner som sorteras på ett annat sätt än datafilens fält.
-
Tabell (rad):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datafil (post):
Age<tab>FirstName<tab>LastName<return>
I elementet <RECORD> representerar formatfilen datavärdena i alla tre fälten som teckendata.
I -elementet <ROW> mappar formatfilen kolumnen Age till det första fältet, kolumnen FirstName till det tredje fältet och kolumnen LastName till det andra fältet.
<?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>
Anmärkning
Ett motsvarande AdventureWorks2022 exempel finns i Använda en formatfil för att mappa tabellkolumner till datafilfält (SQL Server).
C. Utelämna ett datafält
I följande exempel visas en XML-formatfil som beskriver en datafil som innehåller fyra fält med teckendata. Formatfilen mappar datafilen till en tabell som innehåller tre kolumner. Det andra datafältet motsvarar inte någon tabellkolumn.
-
Tabell (rad):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Datafil (post):
Age<tab>FirstName<tab>LastName<return>
I elementet <RECORD> representerar formatfilen datavärdena i alla fyra fälten som teckendata. För varje fält TERMINATOR anger attributet den avslutare som följer datavärdet.
I -elementet <ROW> mappar formatfilen kolumnen Age till det första fältet, kolumnen FirstName till det tredje fältet och kolumnen LastName till det fjärde fältet.
<?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>
Anmärkning
Ett motsvarande AdventureWorks2022 exempel finns i Använda en formatfil för att hoppa över ett datafält (SQL Server).
D. Mappa xsi:type <FIELD> till xsi:type <COLUMN>
I följande exempel visas olika typer av fält och deras mappningar till kolumner.
<?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. Mappa XML-data till en tabell
I följande exempel skapas en tom tabell med två kolumner (t_xml), där den första kolumnen mappar till int datatypen och den andra kolumnen mappar till xml datatypen.
CREATE TABLE t_xml (c1 INT, c2 XML);
Följande XML-formatfil skulle läsa in en datafil i tabellen 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. Importera fält med fast längd eller fast bredd
I följande exempel beskrivs fasta fält med 10 eller 6 tecken var och en. Formatfilen representerar dessa fältlängder/bredder som LENGTH="10" respektive LENGTH="6". Varje rad i datafilerna slutar med en vagnreturradsflödeskombination, <CR><LF>, som formatfilen representerar som 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>
Ytterligare exempel
Fler exempel på både icke-XML-formatfiler och XML-formatfiler finns i följande artiklar:
- Använd en formatfil för att hoppa över en tabellkolumn (SQL Server)
- Använd en formatfil för att hoppa över ett datafält (SQL Server)
- Använd en formatfil för att mappa tabellkolumner till datafilfält (SQL Server)
Relaterade uppgifter
- Skapa en formatfil med bcp (SQL Server)
- Använd en formatfil för att massimportera data (SQL Server)
- Använd en formatfil för att hoppa över en tabellkolumn (SQL Server)
- Använd en formatfil för att hoppa över ett datafält (SQL Server)
- Använd en formatfil för att mappa tabellkolumner till datafilfält (SQL Server)