Kommentar
Å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)
Den här artikeln beskriver hur du använder verktyget bcp för att skapa en formatfil för en viss tabell. Formatfilen baseras på det angivna datatypsalternativet (-n, -c, -weller -N) och tabellen eller visningsavgränsarna.
När du massimportera till en SQL Server-tabell eller massexportera data från en tabell kan du använda en formatfil som ett flexibelt system för att skriva datafiler. Formatfiler kräver lite eller ingen redigering för att uppfylla andra dataformat eller för att läsa datafiler från andra program.
Begränsningar
Den version av bcp verktyget (bcp.exe) som används för att läsa en formatfil måste vara densamma som, eller senare än, versionen som användes för att skapa formatfilen. Till exempel kan SQL Server 2025 (17.x) bcp läsa en version 16.0-formatfil, som genereras av SQL Server 2022 (16.x), bcpmen SQL Server 2022 (16.x) bcp kan inte läsa en version 17.0-formatfil, som genereras av SQL Server 2025 (17.x). bcp
Obs
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.
Skapa formatfiler
SQL Server stöder två typer av formatfiler: icke-XML-format och XML-format. Icke-XML-format är det ursprungliga format som stöds av tidigare versioner av SQL Server.
I allmänhet är XML- och icke-XML-formatfiler utbytbara. Vi rekommenderar dock att du använder XML-syntax för formatfiler eftersom de ger flera fördelar jämfört med filer som inte är XML-format.
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects. Adventure Works Cycles är ett fiktivt tillverkningsföretag som används för att demonstrera databasbegrepp och scenarier.
Skapa en formatfil
För att skapa bcp en formatfil, ange argumentet format och använd nul istället för en datafilsväg. Alternativet format kräver alltid alternativet -f .
För att skapa en XML-fil måste du ange alternativet -x , såsom bcp <table_or_view> format nul -f <format_file_name> -x.
För att särskilja en XML-fil, använd .xml som filnamnsfiländelse, till exempel MyTable.xml.
För information om strukturen och fälten i XML-formatfiler, se XML-formatfiler.
Exempel
Detta avsnitt innehåller exempel som visar hur man använder bcp för att skapa en formatfil. Tabellen HumanResources.Department innehåller fyra kolumner: DepartmentID, Name, GroupNameoch ModifiedDate.
A. Skapa en formatfil för teckendata
Följande exempel skapar en formatfil för HumanResources.Department tabellen med hjälp av teckendataformat.
Skapa en XML-fil med namnet Department-c.xml. Formatfilen använder en annan fältterminator än standard (,). Följande avsnitt visar innehållet i den genererade formatfilen.
Kommandot bcp innehåller följande förbehåll.
| Kvalificeringsomgångar | Beskrivning |
|---|---|
format nul -x -f <format_file> |
Anger XML-formatfil. |
-c |
Anger teckendata. |
-t, |
Anger ett kommatecken (,) som fältavgränsare.Obs! Om datafilen använder standardfältavgränsaren ( \t) är -t växeln onödig. |
-T |
Specificerar att bcp ansluta till SQL Server med en betrodd anslutning med integrerad säkerhet. Om du inte specificerar -Tmåste du ange -U och -P logga in korrekt. |
I Kommandotolken i Windows anger du följande bcp kommando:
bcp AdventureWorks2025.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T
Den genererade formatfilen Department-c.xmlinnehåller följande XML-element:
<?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="," MAX_LENGTH="7"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
För information om syntaxen för denna fil, se XML-formatfiler. För information om teckendata, se Använd teckenformat för att importera eller exportera data.
B. Skapa en formatfil för inhemsk data
Följande exempel skapar en formatfil för HumanResources.Department tabellen med inbyggda datatyper.
Skapa en XML-fil med namnet Department-n.xml. Följande avsnitt visar innehållet i den genererade formatfilen.
Kommandot bcp innehåller följande förbehåll.
| Kvalificeringsomgångar | Beskrivning |
|---|---|
format nul -x -f <format_file> |
Anger XML-formatfil. |
-n |
Anger inbyggda datatyper. |
-T |
Specificerar att bcp ansluta till SQL Server med en betrodd anslutning med integrerad säkerhet. Om du inte specificerar -Tmåste du ange -U och -P logga in korrekt. |
I Kommandotolken i Windows anger du följande bcp kommando:
bcp AdventureWorks2025.HumanResources.Department format nul -x -f Department-n.xml -n -T
Den genererade formatfilen Department-n.xmlinnehåller följande XML-element:
<?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="NativeFixed" LENGTH="2"/>
<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="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>
För information om syntaxen för denna fil, se XML-formatfiler. För information om hur man använder inhemsk data, se Använd native-format för att importera eller exportera data.
C. Skapa en icke-XML-formatfil för unicode-inbyggda data
Om du vill skapa en fil som inte är XML-format för unicode-interna data för HumanResources.Department-tabellen använder du följande kommando:
bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt
För mer information om hur man använder Unicode-native data, se Använd Unicode Native Format för att importera eller exportera data.
D. Skapa en icke-XML-formatfil för Unicode-teckendata
Om du vill skapa en fil som inte är XML-format för Unicode-teckendata för den HumanResources.Department tabell som använder standardavgränsare använder du följande kommando:
bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt
För mer information om hur man använder Unicode-teckendata, se Använd Unicode-teckenformat för att importera eller exportera data.
E. Använd en formatfil med kodsidesalternativet
När du skapar en formatfil med bcp format skriver den information om sorteringsordningen och kodsidan till formatfilen.
Följande exempelformatfil för en tabell med fem kolumner innehåller sorteringen.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 Cyrillic_General_CS_AS
2 SQLCHAR 0 0 "\t" 2 c_1 Cyrillic_General_CS_AS
3 SQLCHAR 0 3000 "\t" 3 c_2 Cyrillic_General_CS_AS
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
Om du försöker importera data till SQL Server med bcp in -c -C65001 -f format_file ... eller med BULK INSERTOPENROWSET eller med FORMATFILE='format_file' CODEPAGE=65001 ..., får sorterings- eller kodsidesinformationen i formatfilen prioritet framför 65001-alternativet.
Därför, om du genererar en formatfil, måste du manuellt radera sorteringsinformationen från den genererade formatfilen innan du börjar importera data tillbaka till SQL Server.
Följande exempel visar formatfilen utan sorteringsinformationen.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 ""
2 SQLCHAR 0 0 "\t" 2 c_1 ""
3 SQLCHAR 0 3000 "\t" 3 c_2 ""
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
Mappa datafält till tabellkolumner
En formatfil skapad av bcp beskriver alla tabellkolumner i ordning. Du kan ändra en formatfil för att omarrangera eller utelämna tabellkolumner. Du kan anpassa en formatfil till en datafil vars fält inte mappas direkt till tabellkolumnerna. Mer information finns i följande artiklar:
- Använd en formatfil för att hoppa över en tabellkolumn
- Använd en formatfil för att hoppa över ett datafält
- Använd en formatfil för att mappa tabellkolumner till datafilfält