Een indelingsbestand maken met bcp (SQL Server)
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
In dit artikel wordt beschreven hoe u het hulpprogramma bcp gebruikt om een indelingsbestand voor een bepaalde tabel te maken. Het indelingsbestand is gebaseerd op de opgegeven optie voor gegevenstypen (-n
, -c
, -w
of -N
) en de scheidingstekens voor tabellen of weergaven.
Wanneer u bulksgewijs importeert in een SQL Server-tabel of gegevens bulksgewijs exporteert uit een tabel, kunt u een indelingsbestand gebruiken als een flexibel systeem voor het schrijven van gegevensbestanden. Bestandsformaten hebben weinig of geen bewerking nodig om aan andere gegevensindelingen te voldoen of om gegevensbestanden van andere softwareprogramma's te lezen.
Beperkingen
De versie van het hulpprogramma bcp (bcp.exe
) dat wordt gebruikt om een indelingsbestand te lezen, moet hetzelfde zijn als of hoger dan de versie die wordt gebruikt om het indelingsbestand te maken. SQL Server 2016 (13.x) bcp kan bijvoorbeeld een bestand met de 12.0-indeling lezen, die wordt gegenereerd door SQL Server 2014 (12.x) bcp, maar SQL Server 2014 (12.x) bcp- geen bestand met versie 13.0-indeling kan lezen, dat wordt gegenereerd door SQL Server 2016 (13.x) bcp.
Notitie
Deze syntaxis, inclusief bulksgewijs invoegen, wordt niet ondersteund in Azure Synapse Analytics. In Azure Synapse Analytics en andere integraties van het clouddatabaseplatform kunt u gegevensverplaatsing uitvoeren via de COPY-instructie in Azure Data Factoryof met behulp van T-SQL-instructies zoals COPY INTO en PolyBase.
Indelingsbestanden maken
SQL Server ondersteunt twee typen indelingsbestand: niet-XML-indeling en XML-indeling. De niet-XML-indeling is de oorspronkelijke indeling die wordt ondersteund door eerdere versies van SQL Server.
Over het algemeen zijn XML- en niet-XML-bestanden uitwisselbaar. We raden u echter aan XML-syntaxis te gebruiken voor het opmaken van bestanden, omdat ze verschillende voordelen bieden ten opzichte van bestanden die niet-XML-indeling zijn.
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022
of AdventureWorksDW2022
voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina. Adventure Works Cycles is een fictief productiebedrijf dat wordt gebruikt om databaseconcepten en -scenario's te demonstreren.
Een XML-indelingsbestand maken
Als u een bcp opdracht wilt gebruiken om een indelingsbestand te maken, geeft u het argument format
op en gebruikt u nul
in plaats van een pad naar een gegevensbestand. De optie format
vereist altijd de -f
optie en om een XML-indelingsbestand te maken, moet u ook de optie -x
opgeven, zoals bcp <table_or_view> format nul -f <format_file_name> -x
.
Als u een XML-indelingsbestand wilt onderscheiden, raden we u aan .xml
te gebruiken als bestandsnaamextensie, bijvoorbeeld MyTable.xml
.
Voor meer informatie over de structuur en velden van XML-bestanden, zie XML Format Files (SQL Server).
Voorbeelden
Deze sectie bevat de volgende voorbeelden die laten zien hoe u de opdrachten bcp kunt gebruiken om een XML-indelingsbestand te maken. De tabel HumanResources.Department
bevat vier kolommen: DepartmentID
, Name
, GroupName
en ModifiedDate
.
Een. Een XML-indelingsbestand maken voor tekengegevens
In het volgende voorbeeld wordt een XML-indelingsbestand, Department.xml
, gemaakt voor de tabel HumanResources.Department
. Het indelingsbestand maakt gebruik van tekengegevensindelingen en een niet-standaardveldeindteken (,
). De inhoud van het gegenereerde indelingsbestand wordt weergegeven na de opdracht.
De opdracht bcp bevat de volgende kwalificaties.
Kwalificaties | Beschrijving |
---|---|
format nul -x -f <format_file> |
Geeft het XML-indelingsbestand op. |
-c |
Geeft tekengegevens op. |
-t, |
Hiermee specificeert u een komma (, ) als veldseparator.Opmerking: Als het gegevensbestand gebruikmaakt van het standaardveldeindteken ( \t ), is de -t -schakeloptie niet nodig. |
-T |
Hiermee geeft u op dat het hulpprogramma bcp verbinding maakt met SQL Server met een vertrouwde verbinding met behulp van geïntegreerde beveiliging. Als -T niet is opgegeven, moet u -U en -P opgeven om u aan te melden. |
Voer bij de Windows-opdrachtprompt de volgende bcp
opdracht in:
bcp AdventureWorks2022.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T
Het gegenereerde indelingsbestand, Department-c.xml
, bevat de volgende XML-elementen:
<?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>
Voor informatie over de syntaxis van dit indelingsbestand, zie XML-indelingsbestanden (SQL Server). Zie Tekenindeling gebruiken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie over tekengegevens.
B. Een XML-indelingsbestand maken voor systeemeigen gegevens
In het volgende voorbeeld wordt een XML-indelingsbestand, Department-n.xml
, gemaakt voor tabel HumanResources.Department
. Het indelingsbestand maakt gebruik van systeemeigen gegevenstypen. De inhoud van het gegenereerde indelingsbestand wordt weergegeven na de opdracht.
De opdracht bcp bevat de volgende kwalificaties.
Kwalificaties | Beschrijving |
---|---|
format nul -x -f <format_file> |
Specificeert het XML-indelingsbestand. |
-n |
Hiermee geeft u systeemeigen gegevenstypen op. |
-T |
Hiermee geeft u op dat het hulpprogramma bcp verbinding maakt met SQL Server met een vertrouwde verbinding met behulp van geïntegreerde beveiliging. Als -T niet is opgegeven, moet u -U en -P opgeven om u aan te melden. |
Voer bij de Windows-opdrachtprompt de volgende bcp
opdracht in:
bcp AdventureWorks2022.HumanResources.Department format nul -x -f Department-n.xml -n -T
Het gegenereerde indelingsbestand, Department-n.xml
, bevat de volgende XML-elementen:
<?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>
Zie XML-indelingsbestanden (SQL Server)voor meer informatie over de syntaxis van dit indelingsbestand. Zie Systeemeigen indeling gebruiken voor het importeren of exporteren van gegevens (SQL Server)voor informatie over het gebruik van systeemeigen gegevens.
Gegevensvelden toewijzen aan tabelkolommen
Zoals gemaakt door bcp, worden in een indelingsbestand alle tabelkolommen in volgorde beschreven. U kunt een indelingsbestand wijzigen om tabelrijen opnieuw te rangschikken of weg te laten. U kunt een opmaakbestand aanpassen aan een gegevensbestand waarvan de velden niet rechtstreeks overeenkomen met de tabelkolommen. Zie de volgende artikelen voor meer informatie:
- Een indelingsbestand gebruiken om een tabelkolom (SQL Server) over te slaan
- Een indelingsbestand gebruiken om een gegevensveld (SQL Server) over te slaan
- Een indelingsbestand gebruiken om tabelkolommen toe te wijzen aan gegevensbestandsvelden (SQL Server)