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)
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.
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.
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)