Dela via


Skapa en formatfil med bcp (SQL Server)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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

Versionen av verktyget bcp (bcp.exe) som används för att läsa en formatfil måste vara samma som eller senare än den version som användes för att skapa formatfilen. Till exempel kan SQL Server 2016 (13.x) bcp läsa en version 12.0-formatfil, som genereras av SQL Server 2014 (12.x) bcp, men SQL Server 2014 (12.x) bcp inte kan läsa en version 13.0-formatfil som genereras av SQL Server 2016 (13.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 AdventureWorks2022- eller AdventureWorksDW2022-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 XML-formatfil

Om du vill använda kommandot bcp för att skapa en formatfil anger du argumentet format och använder nul i stället för en datafilsökväg. Alternativet format kräver alltid alternativet -f och om du vill skapa en XML-formatfil måste du också ange alternativet -x, till exempel bcp <table_or_view> format nul -f <format_file_name> -x.

För att särskilja en XML-formatfil rekommenderar vi att du använder .xml som filnamnstillägg, till exempel MyTable.xml.

Information om strukturen och fälten för XML-formatfiler finns i XML-formatfiler (SQL Server).

Exempel

Det här avsnittet innehåller följande exempel som visar hur du använder bcp-kommandon för att skapa en XML-formatfil. Tabellen HumanResources.Department innehåller fyra kolumner: DepartmentID, Name, GroupNameoch ModifiedDate.

A. Skapa en XML-formatfil för teckendata

I följande exempel skapas en XML-formatfil, Department.xml, för tabellen HumanResources.Department. Formatfilen använder teckendataformat och en icke-standardfältavgränsare (,). Innehållet i den genererade formatfilen visas efter kommandot .

Kommandot bcp innehåller följande kvalificerare.

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 Anger att verktyget bcp ansluter till SQL Server med en betrodd anslutning med integrerad säkerhet. Om -T inte har angetts måste du ange -U och -P för att logga in.

I Kommandotolken i Windows anger du följande bcp kommando:

bcp AdventureWorks2022.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>

Information om syntaxen för den här formatfilen finns i XML-formatfiler (SQL Server). Information om teckendata finns i Använda teckenformat för att importera eller exportera data (SQL Server).

B. Skapa en XML-formatfil för interna data

I följande exempel skapas en XML-formatfil, Department-n.xml, för tabellen HumanResources.Department. Formatfilen använder inbyggda datatyper. Innehållet i den genererade formatfilen visas efter kommandot .

Kommandot bcp innehåller följande attribut.

Kvalomgångar Beskrivning
format nul -x -f <format_file> Anger XML-formatfil.
-n Anger inbyggda datatyper.
-T Anger att verktyget bcp ansluter till SQL Server med en betrodd anslutning med integrerad säkerhet. Om -T inte har angetts måste du ange -U och -P för att logga in.

I Kommandotolken i Windows anger du följande bcp kommando:

bcp AdventureWorks2022.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>

Information om syntaxen för den här formatfilen finns i XML-formatfiler (SQL Server). Information om hur du använder inbyggda data finns i Använda internt format för att importera eller exportera data (SQL Server).

Mappa datafält till tabellkolumner

Som skapats av bcpbeskriver en formatfil alla tabellkolumner i ordning. Du kan ändra en formatfil för att ordna om eller utelämna tabellrader. Du kan anpassa en formatfil till en datafil vars fält inte mappas direkt till tabellkolumnerna. Mer information finns i följande artiklar: