Delen via


bcp-hulpprogramma

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

Het bulk-kopieerprogramma (bcp) kopieert gegevens tussen een SQL Server-exemplaar en een gegevensbestand in een door de gebruiker bepaalde indeling.

Gebruik het hulpprogramma bcp om grote aantallen nieuwe rijen te importeren in SQL Server-tabellen of om gegevens uit tabellen te exporteren naar gegevensbestanden. Behalve wanneer het met de optie queryout wordt gebruikt, is voor het hulpprogramma geen kennis van Transact-SQL vereist. Als u gegevens in een tabel wilt importeren, moet u een indelingsbestand voor die tabel gebruiken of de structuur van de tabel en de typen gegevens begrijpen die geldig zijn voor de kolommen.

Zie Het bcp-hulpprogramma downloaden en installeren voor meer informatie over welke versie van bcp is geïnstalleerd op uw systeem, systeemvereisten en hoe u bcp kunt downloaden.

Opmerking

BCP-gegevensbestanden bevatten geen schema- of indelingsgegevens. Als u bcp gebruikt om een back-up te maken van gegevens en de brontabel later neer te zetten of te wijzigen, hebt u een identieke tabeldefinitie of een indelingsbestand nodig om de gegevens terug te importeren.

Zie Transact-SQL syntaxisconventies (Transact-SQL)voor de syntaxisconventies die worden gebruikt voor de bcp-syntaxis.

BCP gebruiken

Zie Het hulpprogramma bcp gebruiken voor meer informatie over het gebruik van bcp, inclusief voorbeeldopdrachten.

BCP gebruiken in Linux en macOS

Zie Sqlcmd en bcp SQL Server-opdrachtregelprogramma's installeren in Linux voor meer informatie over het installeren van de opdrachtregelprogramma's op macOS en Linux.

Overwegingen voor bcp in Linux en macOS

  • De veldafscheider is een tab (\t).

  • Het lijneindteken is een nieuwe regel (\n).

  • Voor overdrachten van SQL Server naar SQL Server gebruikt u de systeemeigen indeling (-n). Gebruik alleen tekenopmaak (-c) wanneer de gegevens naar een niet-SQL Server-systeem worden overgezet of wanneer het gegevensbestand geen uitgebreide karakters mag bevatten. Voor meer informatie, zie de aanbevolen procedures voor tekenmodus en systeemeigen modus.

  • U moet een backslash (\) quoten of escapen in een opdrachtregelargument. Als u bijvoorbeeld een nieuwe regel wilt opgeven als een aangepaste rijeindteken, gebruikt u een van de volgende mechanismen:

    • -r\\n
    • -r"\n"
    • -r'\n'

Ondersteuning voor TDS 8.0

SQL Server 2025 (17.x) introduceert TDS 8.0-ondersteuning voor het bcp-hulpprogramma .

Syntaxis

bcp [ database_name. ] schema. { table_name | view_name | "query" }
    { in data_file | out data_file | queryout data_file | format nul }

    [ -a packet_size ]
    [ -b batch_size ]
    [ -c ]
    [ -C { ACP | OEM | RAW | code_page } ]
    [ -d database_name ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -L last_row ]
    [ -m max_errors ]
    [ -n ]
    [ -N ]
    [ -o output_file ]
    [ -P password ]
    [ -q ]
    [ -r row_term ]
    [ -R ]
    [ -S [ server_name [ \instance_name ] ] ]
    [ -t field_term ]
    [ -T ]
    [ -U login_id ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

Opdrachtregelopties

De volgende tabel bevat de opdrachtregelopties die beschikbaar zijn in bcpen welke besturingssystemen ze ondersteunen.

Opdrachtregeloptie Ondersteund in Windows Ondersteund in Linux en macOS
Object- en overdrachtsmodus
[database_name.]schema.{table_name | view_name | "query"} Ja Ja
{indata_file | outdata_file | queryoutdata_file | format nul} Ja Ja
-q Ja Ja
Verbinding en authenticatie
-S [server_name[\instance_name]] Ja Ja
-d database_name Ja Ja
-U login_id Ja Ja
- P-wachtwoord Ja Ja
-G Microsoft Entra-authenticatie Ja Ja
-D Ja Ja
-K application_intent Ja Ja
-l login_timeout Ja Ja
-T Ja Ja
-Y[s| m| o] Ja 1 Ja 1
Gegevensweergave
-c Ja Ja
-C { ACP | OEM | RAW | code_page } Ja No
-n Ja Ja
-N Ja No
-w Ja Ja
-z No Ja 2
Bestanden formatteren
-f format_file Ja Ja
-x Ja No
Batchverwerking en prestaties
-a packet_size Ja Ja
-b batch_size Ja Ja
-h"hint [,... n]" Ja No
-m max_errors Ja Ja
-F first_row Ja Ja
-L last_row Ja Ja
-r row_term Ja Ja
-t field_term Ja Ja
Waardeafhandeling
-k Ja Ja
-E Ja Ja
I/O-bestand en logboekregistratie
-i input_file Ja No
-o output_file Ja No
-e err_file Ja Ja
Compatibiliteit en versiebeheer
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Ja No
-u Ja 1 Ja 1
Diverse opties
-R Ja Ja
-v Ja Ja

1 Vereist bcp versie 18 of hoger, die wordt geleverd met SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 en nieuwere versies.

Object- en overdrachtsmodus

database_name

De naam van de database die de opgegeven tabel of weergave bevat. Als u deze parameter niet opgeeft, wordt de standaarddatabase voor de gebruiker gebruikt.

U kunt ook expliciet de databasenaam opgeven met -d.

schema

De naam van de eigenaar van de tabel of weergave. schema is optioneel als de gebruiker die de bewerking uitvoert eigenaar is van de opgegeven tabel of weergave. Als u geen schema opgeeft en de gebruiker die de bewerking uitvoert, geen eigenaar is van de opgegeven tabel of weergave, retourneert SQL Server een foutbericht en wordt de bewerking geannuleerd.

table_name

De naam van de doeltabel bij het importeren van gegevens in SQL Server (in) en de brontabel bij het exporteren van gegevens uit SQL Server (out).

view_name

De naam van de doelweergave bij het kopiëren van gegevens naar SQL Server (in) en de bronweergave bij het kopiëren van gegevens uit SQL Server (out). Wanneer deze wordt gebruikt als bestemming (in), wordt een weergave alleen ondersteund als alle kolommen naar dezelfde tabel verwijzen. Deze beperking is niet van toepassing wanneer de weergave wordt gebruikt als bron (out). Zie INSERTvoor meer informatie over de beperkingen voor het kopiëren van gegevens naar weergaven.

"query"

Een Transact-SQL-query die een resultatenset retourneert. Als de query meerdere resultatensets retourneert, wordt alleen de eerste resultatenset gekopieerd naar het gegevensbestand; volgende resultatensets worden genegeerd. Gebruik dubbele aanhalingstekens rond de query en enkele aanhalingstekens rond alles wat in de query is ingesloten. U moet ook opgeven queryout wanneer gegevens bulksgewijs worden gekopieerd uit een query.

De query kan verwijzen naar een opgeslagen procedure zolang alle tabellen waarnaar in de opgeslagen procedure wordt verwezen, bestaan voordat de instructie bcp wordt uitgevoerd. Als de opgeslagen procedure bijvoorbeeld een tijdelijke tabel genereert, mislukt de bcp-instructie omdat de tijdelijke tabel alleen beschikbaar is tijdens runtime en niet tijdens de uitvoeringstijd van de instructie. In dit geval kunt u de resultaten van de opgeslagen procedure in een tabel invoegen en vervolgens bcp- gebruiken om de gegevens uit de tabel naar een gegevensbestand te kopiëren.

in

Kopieert gegevens uit een bestand naar de databasetabel of -weergave. Hiermee geeft u de richting van de bulkkopie.

out

Hiermee kopieert u gegevens uit de databasetabel of weergave naar een bestand. Hiermee geeft u de richting van de bulkkopie.

Als u een bestaand bestand opgeeft, wordt het bestand overschreven. Wanneer het hulpprogramma bcp gegevens extraheert, vertegenwoordigt deze een lege tekenreeks als null en een null-tekenreeks als een lege tekenreeks.

data_file

Het volledige pad van het gegevensbestand. Wanneer u gegevens bulksgewijs importeert in SQL Server, bevat het gegevensbestand de gegevens die u naar de opgegeven tabel of weergave wilt kopiëren. Wanneer u gegevens bulksgewijs exporteert vanuit SQL Server, bevat het gegevensbestand de gegevens die uit de tabel of weergave zijn gekopieerd. Het pad mag uit 1 tot 255 tekens bestaan. Het gegevensbestand kan maximaal 2^63 - 1 rijen bevatten.

queryout

Kopieert gegevens uit een query en moet alleen worden opgegeven wanneer gegevens bulksgewijs uit een query worden gekopieerd.

format

Hiermee maakt u een indelingsbestand op basis van de opgegeven optie (-n, -c, -wof -N) en de tabel- of weergavescheidingstekens. Wanneer u gegevens in bulk kopieert, kan de opdracht bcp verwijzen naar een indelingsbestand, waardoor u de formatteringsinformatie niet interactief opnieuw hoeft in te voeren. Voor format de optie is de -f optie vereist. Voor het maken van een XML-indelingsbestand is ook de -x optie vereist. Zie Een indelingsbestand maken met bcp (SQL Server) voor meer informatie. U moet nul opgeven als de waarde (format nul).

-q

Hiermee wordt de SET QUOTED_IDENTIFIER ON-instructie uitgevoerd in de verbinding tussen het bcp-hulpprogramma en een exemplaar van SQL Server. Gebruik deze optie om een database, eigenaar, tabel of weergavenaam op te geven die een spatie of één aanhalingsteken bevat. Plaats de volledige driedelige tabel of weergavenaam tussen aanhalingstekens ("").

Als u een databasenaam wilt opgeven die een spatie of één aanhalingsteken bevat, moet u de optie -q gebruiken.

-q is niet van toepassing op waarden die worden doorgegeven aan -d.

Zie de sectie Opmerkingen in dit artikel voor meer informatie.

Verbinding en verificatie

-S [server_name[\instance_name]]

Hiermee geeft u de naam van het SQL Server-exemplaar waarmee verbinding moet worden gemaakt of als u een DSN gebruikt -D.

Als u geen server opgeeft, maakt het bcp-hulpprogramma verbinding met het standaardexemplaren van SQL Server op de lokale computer. U hebt deze optie nodig bij het uitvoeren van een bcp-opdracht vanaf een externe computer in het netwerk of een lokaal benoemd exemplaar. Als u verbinding wilt maken met het standaardexemplaren van SQL Server op een server, geeft u alleen server_nameop. Als u verbinding wilt maken met een benoemd exemplaar van SQL Server, geeft u <server_name>\<instance_name>op.

-d database_name

Hiermee geeft u de database waarmee verbinding moet worden gemaakt. Standaard maakt bcp verbinding met uw standaarddatabase. Als u een driedelige naam opgeeft -d <database_name> (database_name.schema.table, doorgegeven als de eerste parameter aan bcp), treedt er een fout op omdat u de databasenaam niet twee keer kunt opgeven. Als database_name begint met een afbreekstreepje (-) of een slash (/), voegt u geen spatie toe tussen -d en de naam van de database.

-U login_id

Hiermee geeft u de aanmeldings-id op die wordt gebruikt om verbinding te maken met SQL Server.

-P wachtwoord

Hiermee geeft u het wachtwoord voor de aanmeldings-id. Als u deze optie niet gebruikt, vraagt de bcp-opdracht om een wachtwoord. Als u deze optie aan het einde van de opdrachtprompt zonder wachtwoord gebruikt, gebruikt bcp het standaardwachtwoord (NULL).

Important

Gebruik geen leeg wachtwoord. Gebruik een sterk wachtwoord.

Als u uw wachtwoord wilt maskeren, geeft u de optie -P niet op, samen met de optie -U. Nadat u bcp hebt opgegeven, samen met de -U optie en andere schakelopties (specificeer -P niet), drukt u op Enter en wordt u door de opdracht gevraagd om een wachtwoord op te geven. Deze methode zorgt ervoor dat uw wachtwoord wordt gemaskeerd wanneer het wordt ingevoerd.

Als wachtwoord begint met een afbreekstreepje (-) of een slash (/), voegt u geen spatie toe tussen -P en de wachtwoord waarde.

In Linux en macOS, wanneer deze wordt gebruikt met de -G optie zonder -U, -P geeft u een bestand op dat een Microsoft Entra-toegangstoken (v17.8 en latere versies) bevat. Het tokenbestand moet in het UTF-16LE-formaat (geen BOM) zijn. Zie Verifiëren met Microsoft Entra-id in bcp voor meer informatie.

-G

Van toepassing op: Azure SQL Database, Azure SQL Managed Instance, SQL-database in Microsoft Fabric, Azure Synapse Analytics en SQL Server 2022 (16.x) en latere versies.

Deze switch wordt door de client gebruikt om op te geven dat de gebruiker wordt geverifieerd met de Microsoft Entra-id. Voor de -G switch is bcp versie 14.0.3008.27 of hoger vereist. Voer bcp -vuit om uw versie te bepalen. Zie Microsoft Entra-verificatie gebruiken met SQL Database of Azure Synapse Analytics of Verificatie in SQL Database in Microsoft Fabric voor meer informatie.

Zie Verifiëren met Microsoft Entra-id in bcp voor volledige informatie over Microsoft Entra-verificatie in bcp.

-D

Zorgt ervoor dat de waarde die wordt doorgegeven aan de bcp -S optie wordt geïnterpreteerd als een naam van een gegevensbron (DSN). -D kan overal op de opdrachtregel voorkomen; de volgorde ten opzichte van -S maakt niet uit.

Een DSN kan worden gebruikt voor het volgende:

  • Opties voor stuurprogramma's insluiten om opdrachtregels te vereenvoudigen.
  • Stuurprogrammaopties afdwingen die anders niet toegankelijk zijn vanaf de opdrachtregel, zoals MultiSubnetFailover.
  • Help gevoelige referenties beveiligen zodat ze niet detecteerbaar zijn als opdrachtregelargumenten.

Zie DSN-ondersteuning in sqlcmd en bcp voor meer informatie.

-K application_intent (applicatiebedoeling)

Declareert het workloadtype van de toepassing bij het maken van verbinding met een server. De enige waarde die mogelijk is, is ReadOnly. Als u dit niet opgeeft -K, biedt het bcp-hulpprogramma geen ondersteuning voor connectiviteit met een secundaire replica in een AlwaysOn-beschikbaarheidsgroep. Voor meer informatie, zie alleen-lezen werklast overdragen naar secundaire replica van een Always On-beschikbaarheidsgroep.

-l login_timeout

Hiermee geeft u een time-out voor aanmelding op. De -l-optie geeft aan hoeveel seconden er verstrijken voordat een aanmelding bij een SQL Server verloopt wanneer u probeert verbinding te maken met een server. De standaardtime-out voor aanmelding is 15 seconden. De time-out voor aanmelding moet een getal tussen 0 en 65534 zijn. Als de waarde die u opgeeft niet numeriek is of niet in dat bereik valt, genereert bcp een foutbericht. Een waarde van 0 geeft een oneindige time-out 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. De beveiligingsreferenties van de netwerkgebruiker, login_iden wachtwoord zijn niet vereist. Als u -T niet opgeeft, moet u -U en -P specificeren om succesvol verbinding te maken.

Important

Alleen gebruiken -T wanneer u verbinding maakt met SQL Server met een met Windows geïntegreerde vertrouwde verbinding. Wanneer u verbinding maakt met Azure SQL Database of Azure Synapse Analytics , -T (geïntegreerde Windows-verificatie) wordt niet ondersteund. Gebruik voor Microsoft Entra-verificatie voor Azure-services of SQL Server 2022 (16.x) en latere versies -G (zie Verifiëren met Microsoft Entra-id in bcp).

-Y[s|m|o]

Van toepassing op: bcp versie 18 en hoger, die wordt geleverd met SQL Server 2025 (17.x).

Hiermee geeft u op of verbindingen TLS-versleuteling via het netwerk gebruiken. -Y kan o (voor Optional), m (voor Mandatory, de standaard) of s (voor Strict) zijn. Als u -Y niet opneemt, dan is -Ym (voor Mandatory) de standaardwaarde.

-u

Van toepassing op: bcp versie 18 en hoger, die wordt geleverd met SQL Server 2025 (17.x).

Vertrouwensservercertificaat. Wanneer deze wordt gebruikt met de versleutelingsoptie voor de verbinding, schakelt u versleuteling in met behulp van een zelfondertekend servercertificaat.

Gegevensweergave

-c

Voert de bewerking uit met behulp van een karakterdatatype. Met deze optie wordt niet voor elk veld gevraagd. Het gebruikt teken als opslagtype, zonder voorvoegsel, en gebruikt \t (tabteken) als veldscheidingsteken en \r\n (regelafbreekkarakter) als rijeindteken. -c is niet compatibel met -w.

Zie Tekenindeling gebruiken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie.

Zie aanbevolen procedures voor tekenmodus en systeemeigen modus.

-C { ACP | OEM | RAW | code_page }

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Hiermee geeft u de codepagina van de gegevens in het gegevensbestand. code_page is alleen relevant als de gegevens kolommen bevatten met char, varchar, of tekst waarvan de tekenwaarden groter zijn dan 127 of kleiner dan 32.

Geef een sorteringsnaam op voor elke kolom in een indelingsbestand, behalve wanneer u wilt dat de optie 65001 voorrang heeft op de sorterings- of codepaginaspecificatie.

Waarde van codepagina Description
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Standaardcodepagina die door de client wordt gebruikt. Deze codepagina is de standaardpagina als u niet opgeeft -C.
RAW Er wordt geen conversie van de ene codepagina naar de andere uitgevoerd. Deze optie is de snelste omdat er geen conversie plaatsvindt.
<code_page> Specifiek codepaginanummer, zoals 850.

Versies vóór SQL Server 2016 (13.x) bieden geen ondersteuning voor codepagina 65001 (UTF-8-codering). Versies vanaf 13 kunnen UTF-8-codering importeren in eerdere versies van SQL Server.

-n

Voert de bulkkopiebewerking uit met behulp van de systeemeigen gegevenstypen (database) van de gegevens. Met deze optie wordt niet voor elk veld gevraagd. Hierbij worden de systeemeigen waarden gebruikt.

Zie Systeemeigen indeling gebruiken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie.

Raadpleeg de beste praktijken voor tekenmodus en systeemeigen modus.

-N

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Voert de bulkkopiebewerking uit met behulp van de systeemeigen gegevenstypen (database) van de gegevens voor niet-tekengegevens en Unicode-tekens voor tekengegevens. Deze optie biedt een alternatief voor betere prestaties voor de optie -w en is bedoeld voor het overdragen van gegevens van het ene exemplaar van SQL Server naar het andere met behulp van een gegevensbestand. Er verschijnt geen melding voor elk veld. Gebruik deze optie wanneer u gegevens overdraagt die uitgebreide ANSI-tekens bevatten en u wilt profiteren van de prestaties van de systeemeigen modus.

Zie Unicode Native Format gebruiken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie.

Als u gegevens exporteert en vervolgens in hetzelfde tabelschema importeert met behulp van bcp met -N, ziet u mogelijk een afkappingswaarschuwing als er een niet-Unicode karakterkolom van vaste lengte aanwezig is (bijvoorbeeld een char(10)).

U kunt de waarschuwing negeren. Een manier om deze waarschuwing op te lossen is door -n te gebruiken in plaats van -N.

-w

Voert de bewerking voor bulksgewijs kopiëren uit met Unicode-tekens. Bij deze optie wordt er niet voor elk veld gevraagd. Er wordt nchar gebruikt als opslagtype, geen voorvoegsels, \t (tabteken) als scheidingsteken en \n (newlineteken) als het rijeindteken. -w is niet compatibel met -c.

Zie Unicode-tekenindeling gebruiken voor het importeren of exporteren van gegevens (SQL Server) voor meer informatie.

-z

Van toepassing op: alleen bcp (ODBC), Linux en macOS. Windows wordt niet ondersteund.

Hiermee schakelt u ondersteuning voor vectorgegevenstypen in het bcp-hulpprogramma in. Deze functie is momenteel standaard uitgeschakeld. Als deze functie is uitgeschakeld, worden vectorgegevens geïmporteerd of geëxporteerd als JSON float-matrixtekenreeksen. Wanneer deze optie is ingeschakeld en wanneer u verbinding maakt met SQL Server 2025 (17.x) en latere versies, worden vectorgegevens geïmporteerd of geëxporteerd in systeemeigen vector binair bestand.

Bestanden formatteren

-f format_file

Hiermee specificeert u het volledige pad van een indelingsbestand. De betekenis van deze optie is afhankelijk van de omgeving waarin deze wordt gebruikt, als volgt:

  • Als u -f met de optie format gebruikt, wordt het opgegeven format_file gemaakt voor de opgegeven tabel of weergave. Als u een XML-bestandsindeling wilt maken, geeft u ook de optie -x op. Zie Een indelingsbestand maken met bcp (SQL Server) voor meer informatie.

  • Als u -f met de in of out optie gebruikt, is een bestaand formaatbestand vereist.

    Opmerking

    Het gebruik van een indelingsbestand met de in of out optie is optioneel. Als u de -f optie niet opgeeft en u ook -n, -c, -w of -N niet specificeert, vraagt de opdracht om informatie over het formaat en kunt u uw antwoorden opslaan in een opmaakbestand. De standaardbestandsnaam is bcp.fmt.

Als format_file begint met een afbreekstreepje (-) of een slash (/), neemt u geen spatie tussen -f en de format_file waarde op.

-x

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Gebruik deze optie met de format en -fformat_file opties. Er wordt een xml-indelingsbestand gegenereerd in plaats van het standaardbestand met een niet-XML-indeling. De -x optie werkt niet bij het importeren of exporteren van gegevens. Er wordt een fout gegenereerd als deze wordt gebruikt zonder zowel format als -fformat_file.

Batchverwerking en prestaties

-a packet_size

Hiermee geeft u het aantal bytes per netwerkpakket dat de client verzendt naar en ontvangt van de server. Stel deze serverconfiguratieoptie in met behulp van SQL Server Management Studio of de opgeslagen procedure van het sp_configure systeem. U kunt de serverconfiguratieoptie echter afzonderlijk overschrijven met behulp van deze optie. packet_size kan van 4.096 bytes tot 65.535 bytes zijn. De standaardwaarde is 4096.

Het vergroten van de pakketgrootte kan de prestaties van bulksgewijs kopiërende bewerkingen verbeteren. Als u een groter pakket aanvraagt, maar de server het niet kan verlenen, wordt de standaardwaarde gebruikt. De prestatiestatistieken die door het bcp-hulpprogramma worden gegenereerd, tonen de gebruikte pakketgrootte.

-b batch_size

Hiermee geeft u het aantal rijen per batch geïmporteerde gegevens op. Elke batch wordt geïmporteerd en geregistreerd als een afzonderlijke transactie waarmee de hele batch wordt geïmporteerd voordat deze wordt doorgevoerd. Standaard importeert bcp alle rijen in het gegevensbestand als één batch. Als u de rijen tussen meerdere batches wilt verdelen, geeft u een batch_size op die kleiner is dan het aantal rijen in het gegevensbestand. Als de transactie voor een batch mislukt, worden alleen invoegingen uit de huidige batch teruggedraaid. Batches die al door vastgelegde transacties zijn geïmporteerd, worden niet beïnvloed door een latere fout.

De -b en de -h "ROWS_PER_BATCH=<bb>" hint sluiten elkaar wederzijds uit. Gebruik -b wanneer u wilt dat bcp batchverwerking expliciet beheert, of gebruik ROWS_PER_BATCH om de server optimaal te beïnvloeden bij het verzenden van de gegevens als een enkele transactie.

-h "hints [, ... n]"

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Hiermee geeft u de hint of hints op die moeten worden gebruikt tijdens het bulksgewijs importeren van gegevens in een tabel of weergave.

  • ORDER (kolom [ASC | DESC] [, ...n])

    De sorteervolgorde van de gegevens in het gegevensbestand. De prestaties van bulkimport worden verbeterd als de geïmporteerde gegevens worden gesorteerd op basis van de geclusterde index in de tabel, indien van toepassing. Als het gegevensbestand in een andere volgorde wordt gesorteerd, anders dan de volgorde van een geclusterde indexsleutel, of als er geen geclusterde index in de tabel staat, wordt de ORDER-component genegeerd. De kolomnamen die u opgeeft, moeten geldige kolomnamen zijn in de doeltabel. Standaard wordt bcp ervan uitgegaan dat het gegevensbestand niet is gerangschikt. Voor geoptimaliseerde bulkimport valideert SQL Server ook of de geïmporteerde gegevens zijn gesorteerd.

  • ROWS_PER_BATCH = bb

    Aantal rijen met gegevens per batch (zoals bb). Wordt gebruikt wanneer u niet opgeeft -b, wat resulteert in het volledige gegevensbestand dat als één transactie naar de server wordt verzonden. De server optimaliseert de bulkload volgens de waarde bb. Standaard is ROWS_PER_BATCH onbekend.

  • KILOBYTES_PER_BATCH = CC

    Het geschatte aantal kilobytes aan gegevens per batch (zoals cc). Standaard is KILOBYTES_PER_BATCH onbekend.

  • TABLOCK

    Hiermee geeft u op dat een vergrendeling op tabelniveau in bulk wordt verworven tijdens de bulkload operatie; anderszins wordt een vergrendeling op rijniveau verworven. Deze hint verbetert de prestaties aanzienlijk, omdat het vasthouden van een vergrendeling tijdens de bulk-kopieerbewerking de vergrendelingscontentie op de tabel vermindert. U kunt een tabel gelijktijdig laden vanaf meerdere clients als de tabel geen indexen heeft en TABLOCK is opgegeven. Standaard bepaalt de tabeloptie table lock on bulkload het vergrendelingsgedrag. Zie sp_tableoptionvoor meer informatie.

    Opmerking

    Als de doeltabel een geclusterde columnstore-index is, is TABLOCK hint niet vereist voor het laden door meerdere gelijktijdige clients, omdat aan elke gelijktijdige thread een afzonderlijke rijgroep in de index is toegewezen en er gegevens in worden geladen. Zie Columnstore-indexen voor meer informatie: overzicht.

  • CHECK_CONSTRAINTS

    Hiermee wordt aangegeven dat alle beperkingen voor de doeltabel of weergave moeten worden gecontroleerd tijdens de bulkimportbewerking. Zonder de CHECK_CONSTRAINTS hint worden alle CHECKFOREIGN KEY en beperkingen genegeerd en na de bewerking wordt de beperking in de tabel gemarkeerd als niet-vertrouwd.

    Opmerking

    UNIQUE, PRIMARY KEYen NOT NULL beperkingen worden altijd gehandhaafd.

    Op een bepaald moment moet u de beperkingen voor de hele tabel controleren. Als de tabel vóór de bulkimportbewerking niet leeg was, kunnen de kosten van het opnieuw valideren van de beperking groter zijn dan de kosten voor het toepassen van CHECK-beperkingen op de incrementele gegevens. Daarom kunt u het controleren van beperkingen meestal inschakelen tijdens een incrementele bulkimport.

    Een situatie waarin beperkingen zijn uitgeschakeld (het standaardgedrag) is als de invoergegevens rijen bevatten die beperkingen schenden. Door beperkingen uit te schakelen CHECK , kunt u de gegevens importeren en vervolgens Transact-SQL instructies gebruiken om gegevens te verwijderen die niet geldig zijn.

    Opmerking

    De -mmax_errors-schakeloptie is niet van toepassing op beperkingencontrole.

  • FIRE_TRIGGERS

    Wanneer u deze optie opgeeft met de in argument, worden eventuele invoegtriggers die in de doeltabel zijn gedefinieerd tijdens de bulkkopiebewerking uitgevoerd. Als u FIRE_TRIGGERS niet opgeeft, worden er geen inserttiggers uitgevoerd. FIRE_TRIGGERS wordt genegeerd voor de argumenten out, queryouten format.

-m max_errors

Hiermee geeft u het maximum aantal syntaxisfouten op dat kan optreden voordat de bcp bewerking wordt geannuleerd. Een syntaxisfout impliceert een fout bij het converteren van gegevens naar het doelgegevenstype. Het max_errors totaal sluit eventuele fouten uit die de server alleen kan detecteren, zoals schendingen van beperkingen.

Een rij die het bcp-hulpprogramma niet kan kopiëren, wordt genegeerd en geteld als één fout. Als u deze optie niet opneemt, is de standaardwaarde 10.

Opmerking

De -m optie is niet van toepassing bij het converteren van het geld of bigint-gegevenstypen .

-F eerste_rij

Hiermee geeft u het nummer op van de eerste rij die u wilt exporteren uit een tabel of importeert uit een gegevensbestand. Voor deze parameter is een waarde vereist die groter is dan (>) 0, maar kleiner dan (<) of gelijk is aan het totale aantal rijen. Als u deze parameter niet opgeeft, is de standaardwaarde de eerste rij van het bestand.

first_row kan een positief geheel getal zijn met een waarde tot 2^63-1. -F first_row maakt gebruik van nummering op basis van 1.

- L-last_row

Hiermee geeft u het nummer op van de laatste rij die u wilt exporteren uit een tabel of importeren uit een gegevensbestand. Voor deze parameter is een waarde vereist die groter is dan (>) 0, maar kleiner dan (<) of gelijk is aan het getal van de laatste rij. Als u deze parameter niet opgeeft, is de standaardwaarde de laatste rij van het bestand.

last_row kan een positief geheel getal zijn met een waarde tot 2^63-1.

-r row_term

Stelt het rijeindteken in. De standaardwaarde is \n (nieuwlijnteken). Gebruik deze parameter om het standaardrijeindteken te overschrijven. Zie Veld- en rijeindtekens opgeven (SQL Server) voor meer informatie.

Als u het rijeindteken opgeeft in hexadecimale notatie in een bcp opdracht, wordt de waarde afgekapt op 0x00. Als u bijvoorbeeld 0x410041opgeeft, wordt 0x41 gebruikt.

Als row_term met een afbreekstreepje (-) of een schuine streep (/) begint, laat u geen spatie staan tussen -r en de row_term waarde.

-t field_term

Specificeert de veldbegrenzing. De standaardwaarde is \t (tabteken). Gebruik deze parameter om het standaardveldeindteken te overschrijven. Zie Veld- en rijeindtekens opgeven (SQL Server) voor meer informatie.

Als u het veldeindteken opgeeft in hexadecimale notatie in een bcp opdracht, wordt de waarde afgekapt op 0x00. Als u bijvoorbeeld 0x410041opgeeft, wordt 0x41 gebruikt.

Als field_term begint met een afbreekstreepje (-) of een slash (/), zet u geen spatie tussen -t en de waarde van de field_term.

Waardeafhandeling

-k

Hiermee geeft u op dat lege kolommen een null-waarde behouden tijdens de bewerking, in plaats van eventuele standaardwaarden voor de kolommen in te voegen. Zie Null-waarden of standaardwaarden behouden tijdens het bulksgewijs importeren (SQL Server)voor meer informatie.

-E

Hiermee geeft u op dat voor de bewerking identiteitswaarden worden gebruikt in het geïmporteerde gegevensbestand voor de identiteitskolom. Als u dit niet opgeeft -E, negeert SQL Server de identiteitswaarden voor deze kolom in het gegevensbestand dat wordt geïmporteerd en wijst automatisch unieke waarden toe op basis van de seed- en incrementele waarden die zijn opgegeven tijdens het maken van de tabel. Zie DBCC CHECKIDENT-voor meer informatie.

Als het gegevensbestand geen waarden bevat voor de identiteitskolom in de tabel of weergave, gebruikt u een indelingsbestand om op te geven dat de identiteitskolom in de tabel of weergave moet worden overgeslagen bij het importeren van gegevens. SQL Server wijst automatisch unieke waarden toe voor de kolom.

De optie -E heeft een speciale machtigingsvereiste. Zie 'Opmerkingen' verderop in dit artikel voor meer informatie.

I/O-bestand en logboekregistratie

-i input_file

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Hiermee geeft u de naam van een antwoordbestand. Het bestand bevat de antwoorden op de vragen over de opdrachtprompt voor elk gegevensveld wanneer u een bulkkopiebewerking uitvoert met behulp van de interactieve modus (-n-c-wof -N niet opgegeven).

Als input_file begint met een afbreekstreepje (-) of een slash (/), neem geen spatie op tussen -i en de waarde van input_file.

-o uitvoerbestand

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Hiermee geeft u de naam op van een bestand dat uitvoer ontvangt die wordt omgeleid vanaf de opdrachtprompt.

Als output_file begint met een afbreekstreepje (-) of een slash (/), laat dan geen spatie tussen -o en de output_file waarde.

-e err_file

Hiermee geeft u het volledige pad op van een foutbestand dat wordt gebruikt voor het opslaan van rijen die het hulpprogramma bcp niet van het bestand naar de database kan overdragen. Foutberichten van de opdracht bcp gaan naar het werkstation van de gebruiker. Als u deze optie niet gebruikt, wordt er geen foutenbestand gemaakt.

Als err_file begint met een koppelteken (-) of een schuine streep (/), moet er geen spatie zijn tussen -e en de waarde van err_file.

Compatibiliteit en versiebeheer

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

Van toepassing op: alleen Windows. Niet ondersteund in Linux en macOS.

Voert de bulkkopiebewerking uit met behulp van gegevenstypen uit een eerdere versie van SQL Server. Met deze optie wordt niet voor elk veld gevraagd; de standaardwaarden worden gebruikt.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) en SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x)

Als u bijvoorbeeld gegevens wilt genereren voor typen die SQL Server 2000 (8.x) niet ondersteunen, maar zijn geïntroduceerd in latere versies, gebruikt u de -V80 optie.

Zie Gegevens in systeemeigen en tekenindeling importeren uit eerdere versies van SQL Servervoor meer informatie.

Diverse opties

-R

Hiermee geeft u op dat het bcp-hulpprogramma bulksgewijs valuta-, datum- en tijdgegevens kopieert naar SQL Server met behulp van de regionale indeling die is gedefinieerd voor de landinstelling van de clientcomputer. Standaard negeert bcp landinstellingen.

-v

Rapporteert het bcp versienummer en copyright van het hulpprogramma.

Opmerkingen

  • Het hulpprogramma bcp ondersteunt systeemeigen gegevensbestanden die compatibel zijn met alle ondersteunde versies van SQL Server.

  • Het hulpprogramma bcp geeft alleen de eerste 512 bytes van een foutbericht weer.

Permissions

Voor een bcp out-bewerking is SELECT machtiging voor de brontabel vereist.

Voor een bcp in bewerking zijn minimaal SELECT en INSERT machtigingen voor de doeltabel vereist. Daarnaast is ALTER TABLE machtiging vereist als aan een van de volgende voorwaarden wordt voldaan:

  • Er bestaan beperkingen en de CHECK_CONSTRAINTS hint is niet opgegeven.

    Beperkingen uitschakelen is het standaardgedrag. Als u beperkingen expliciet wilt inschakelen, gebruikt u de optie -h met de CHECK_CONSTRAINTS hint.

  • Triggers bestaan en de FIRE_TRIGGERS hint is niet gespecificeerd.

    Triggers worden standaard niet geactiveerd. Als u triggers expliciet wilt activeren, gebruikt u de optie -h met de FIRE_TRIGGERS hint.

  • U gebruikt de optie -E om identiteitswaarden uit een gegevensbestand te importeren.

Hulp krijgen

Bijdragen aan SQL-documentatie

Wist u dat u zelf SQL-inhoud kunt bewerken? Door dit te doen helpt u niet alleen onze documentatie te verbeteren, maar krijgt u ook erkenning als bijdrager aan de pagina.

Zie Microsoft Learn-documentatie bewerken voor meer informatie.