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
Analytics Platform System (PDW)
När du massimportera data till en SQL Server-tabell eller massexportera data från en tabell kan du använda en formatfil för att lagra all formatinformation som krävs för massexport eller massimport av data. Detta inkluderar formatinformation för varje fält i en datafil i förhållande till den tabellen.
SQL Server stöder två typer av formatfiler: XML-format och icke-XML-formatfiler. Både icke-XML-formatfiler och XML-formatfiler innehåller beskrivningar av varje fält i en datafil, och XML-formatfiler innehåller även beskrivningar av motsvarande tabellkolumner. I allmänhet är XML- och icke-XML-formatfiler utbytbara. Vi rekommenderar dock att du använder XML-syntaxen för nya formatfiler eftersom de ger flera fördelar jämfört med icke-XML-formatfiler. Mer information finns i XML-formatfiler (SQL Server).
Anteckning
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.
Fördelar med formatfiler
Formatfiler ger ett flexibelt system för att skriva datafiler som kräver lite eller ingen redigering för att följa andra dataformat eller för att läsa datafiler från annan programvara.
Du kan massimportera data utan att behöva lägga till eller ta bort onödiga data eller ändra ordning på befintliga data i datafilen. Formatfiler kan vara användbara när det finns ett matchningsfel mellan fälten i datafilen och kolumnerna i tabellen.
Exempel på formatfiler
I följande exempel visas layouten för en fil som inte är XML-format och en XML-formatfil. Dessa formatfiler motsvarar tabellen HumanResources.myTeam i AdventureWorks2022 exempeldatabas. Den här tabellen innehåller fyra kolumner: EmployeeID, Name, Titleoch ModifiedDate.
Observera
Information om den här tabellen och hur du skapar den finns i Exempeltabellen HumanResources.myTeam (SQL Server).
A. Använda en fil som inte är XML-format
Följande icke-XML-formatfil använder det interna SQL Server-dataformatet för tabellen HumanResources.myTeam. Den här formatfilen skapades med hjälp av följande bcp kommando.
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T
Kommandot bcp är som standard en lokal, standardinstans av SQL Server med Windows-autentisering. Du kan ange annan instans- och inloggningsinformation efter behov. Mer information finns i bcp Utility. Om du till exempel vill ange en fjärrserver med namnet instans med Windows-autentisering använder du:
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T -S servername/instancename
Innehållet i den här formatfilen är följande, från och med huvudversionsnumret för SQL Server och tabellmetadatainformationen.
14.0
4
1 SQLSMALLINT 0 2 "" 1 EmployeeID ""
2 SQLNCHAR 2 100 "" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLNCHAR 2 100 "" 3 Title SQL_Latin1_General_CP1_CI_AS
4 SQLNCHAR 2 100 "" 4 Background SQL_Latin1_General_CP1_CI_AS
Mer information finns i Använda filer i format som inte är XML (SQL Server).
B. Använda en XML-formatfil
Följande XML-formatfil använder det interna SQL Server-dataformatet för tabellen HumanResources.myTeam. Den här formatfilen skapades med hjälp av följande bcp kommando.
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.xml -x -n -T
Formatfilen innehåller:
<?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" LENGTH="1"/>
<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="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Mer information finns i XML-formatfiler (SQL Server).
När krävs en formatfil?
Formatfiler krävs vanligtvis under följande omständigheter:
När du använder en
INSERT ... SELECT * FROM OPENROWSET(BULK...)-instruktion.För komplexa massimportsituationer med bcp eller
BULK INSERT.Samma datafil används som källa för flera tabeller som har olika scheman.
Datafilen har ett annat antal fält än vad måltabellen har kolumner; till exempel:
- Måltabellen innehåller minst en kolumn för vilken antingen ett standardvärde har definierats eller
NULLtillåts. - Användarna har inte
SELECT/INSERTbehörigheter för en eller flera kolumner i tabellen. - En enskild datafil används med två eller flera tabeller som har olika scheman.
- Måltabellen innehåller minst en kolumn för vilken antingen ett standardvärde har definierats eller
Kolumnordningen skiljer sig åt för datafilen och tabellen.
De avslutande tecknen eller prefixlängderna skiljer sig åt mellan kolumnerna i datafilen.
Not
Om ett bcp kommando anger en dataformatshanterare (-n, -c, -w, eller -N) eller en BULK INSERT-åtgärd anger alternativet DATAFILETYPE, används det angivna dataformatet som standardmetod för att tolka datafilens fält.
Relaterade uppgifter
- Använda BCP-native/formatfil kontra textfil och BOM
- Använd filer som inte är XML-format (SQL Server)
- XML-formatfiler (SQL Server)
- dataformat för massimport eller massexport (SQL Server)
- Skapa en formatfil med bcp (SQL Server)