Dela via


Använda icke-XML-formatfiler (SQL Server)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

I SQL Server stöds två typer av formatfiler för massexport och import: icke-XML-formatfiler och XML-formatfiler.

Fördelar med filer som inte är XML-format

Du kan skapa en fil som inte är XML-format automatiskt genom att ange formatalternativet i ett bcp-kommando .

När du anger en befintlig formatfil i ett bcp-kommando använder kommandot de värden som registreras i formatfilen och du uppmanas inte att ange fillagringstyp, prefixlängd, fältlängd eller fältavgränsare.

Du kan skapa en formatfil för en viss datatyp, till exempel teckendata eller inbyggda data.

Du kan skapa en icke-XML-formatfil som innehåller interaktivt angivna attribut för varje datafält. Mer information finns i Ange kompatibilitetsdataformat när du använder bcp (SQL Server).

XML-formatfiler har flera fördelar jämfört med filer som inte är XML-format. Mer information finns i XML-formatfiler (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 Factoryeller med hjälp av T-SQL-instruktioner som COPY INTO och PolyBase.

Struktur för filer som inte är XML-format

En fil som inte är XML-format är en textfil som har en specifik struktur. Filen med icke-XML-format innehåller information om fillagringstyp, prefixlängd, fältlängd och fältavgränsare för varje tabellkolumn.

Följande bild illustrerar formatfilfälten för en exempelfil som inte är XML-format.

Identifierar fälten i en fil som inte är xml-format.

Fälten Version och Antal kolumner sker endast en gång. Deras betydelser beskrivs i följande tabell.

Formatfilfält Beskrivning
Utgåva Versionsnummer för bcp-verktyget :

9.0 = SQL Server 2005 (9.x)

10.0 = SQL Server 2008 (10.0.x)

11.0 = SQL Server 2012 (11.x)

12.0 = SQL Server 2014 (12.x)

13.0 = SQL Server 2016 (13.x)

14.0 = SQL Server 2017 (14.x)

15.0 = SQL Server 2019 (15.x)

16.0 = SQL Server 2022 (16.x)

Versionsnumret identifieras endast av bcp, inte av Transact-SQL.

Obs! Versionen av bcp-verktyget som används för att läsa en formatfil måste vara samma som eller en senare version än vad som användes för att skapa formatfilen. Till exempel kan SQL Server 2012 (11.x) bcp läsa en version 10.0-formatfil, som genereras av SQL Server 2008 (10.0.x) bcp, men SQL Server 2008 (10.0.x) bcp kan inte läsa en version 12.0-formatfil, som genereras av SQL Server 2014 (12.x) bcp.
Antal kolumner Antal fält i datafilen. Det här talet måste vara detsamma i alla rader.

De andra formatfilfälten beskriver de datafält som ska massimporteras eller exporteras. Varje datafält kräver en separat rad i formatfilen. Varje formatfilrad innehåller värden för de format-filfält som beskrivs i följande tabell.

fält för formatfil Beskrivning
Fältordning för värdfil Ett tal som anger positionen för varje fält i datafilen. Det första fältet på raden är 1 och så vidare.
Datatyp för värdfil Anger den datatyp som lagras i ett angivet fält i datafilen. Med ASCII-datafiler använder du SQLCHAR; för interna formatdatafiler använder du standarddatatyper. Mer information finns i Ange fillagringstyp med bcp (SQL Server).
Prefixlängd Antal längdprefixtecken för fältet. Giltiga prefixlängder är 0, 1, 2, 4 och 8. Om du vill undvika att ange längdprefixet anger du detta till 0. Ett längdprefix måste anges om fältet innehåller NULL datavärden. Mer information finns i Ange prefixlängd i datafiler med bcp (SQL Server).
Datalängd för värdfil Maximal längd, i byte, av den datatyp som lagras i datafilens specifika fält.

Om du skapar en icke-XML-formatfil för en avgränsad textfil kan du ange 0 för värdfilens datalängd för varje datafält. När en avgränsad textfil med prefixlängden 0 och en terminator importeras ignoreras värdet för fältlängd eftersom lagringsutrymmet som används av fältet är lika med datalängden plus terminatorn.

Mer information finns i Ange fältlängd med hjälp av bcp (SQL Server).
Terminator Avgränsare för att avgränsa fälten i en datafil. Vanliga avslutare är kommatecken (,), flik (\t) och radslut (\r\n). Mer information finns i Ange fält- och radavgränsare (SQL Server).
Serverkolumnordning I vilken ordning kolumner visas i SQL Server-tabellen. Om det fjärde fältet i datafilen till exempel mappar till den sjätte kolumnen i en SQL Server-tabell är serverkolumnordningen för det fjärde fältet 6.

Om du vill förhindra att en kolumn i tabellen tar emot data från datafilen anger du värdet för serverkolumnordningen till 0.
Serverkolumnnamn Namnet på kolumnen som kopierats från SQL Server-tabellen. Det faktiska namnet på fältet krävs inte, men fältet i formatfilen får inte vara tomt.
Kolumnens jämförelseordning Sorteringsordning som används för att lagra tecken och Unicode-data i datafilen.

Anmärkning

Du kan ändra en formatfil så att du kan massimportera från en datafil där fältens nummer eller ordning skiljer sig från antalet eller ordningen på tabellkolumnerna. Mer information finns i listan Relaterade uppgifter .

Exempel på en fil som inte är XML-format

I följande exempel visas en tidigare skapad icke-XML-formatfil (myDepartmentIdentical-f-c.fmt). Den här filen beskriver ett teckendatafält för varje kolumn i HumanResources.Department tabellen i exempeldatabasen AdventureWorks2022 .

Den genererade formatfilen myDepartmentIdentical-f-c.fmtinnehåller följande information:

12.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID     ""
2       SQLCHAR       0       100     "\t"     2     Name             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName        SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate     ""

Anmärkning

En bild som visar format-filfälten i förhållande till den här exempelfilen som inte är XML-format finns i Struktur för filer som inte är XML-format.