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 programmaprogramma voor bulksgewijs kopiëren (bcp) kopieert gegevens bulksgewijs tussen een exemplaar van Microsoft SQL Server en een gegevensbestand in een door de gebruiker opgegeven indeling.

Zie voor het gebruik van bcp- op Linux, SQL Server opdrachtregelprogramma's sqlcmd en bcp installeren op Linux. Zie Gegevens laden met bcpvoor gedetailleerde informatie over het gebruik van bcp- met Azure Synapse Analytics.

Het hulpprogramma bcp kan worden gebruikt voor het importeren van grote aantallen nieuwe rijen in SQL Server-tabellen of voor het exporteren van gegevens uit tabellen 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.

Notitie

Als u bcp gebruikt voor het maken van een back-up van uw gegevens, maakt u een formaatbestand om de gegevensindeling vast te leggen. bcp gegevensbestanden geen schema- of indelingsgegevens bevatten, dus als een tabel of weergave wordt verwijderd en u geen indelingsbestand hebt, kunt u de gegevens mogelijk niet importeren.

Voor de syntaxisconventies die worden gebruikt voor de bcp syntaxis, raadpleegt u Transact-SQL syntaxisconventies.

Download de nieuwste versie van het bcp-hulpprogramma

De opdrachtregelprogramma's zijn algemeen beschikbaar (GA), echter worden ze uitgebracht met het installatiepakket voor SQL Server 2019 (15.x) en latere versies.

Ramen

Linux en macOS

Zie Sql Server-opdrachtregelprogramma's sqlcmd en bcp installeren op Linux- voor instructies voor het installeren van sqlcmd- en bcp- op Linux en macOS.

Versie-informatie

  • Releasenummer: 15.0.4298.1
  • Buildnummer: 15.0.4298.1
  • Releasedatum: 7 april 2023

bcp- ondersteunt Microsoft Entra-verificatie, waaronder MFA-ondersteuning (multifactor authentication) voor Azure SQL Database, SQL-database in Microsoft Fabric en Azure Synapse Analytics.

Notitie

Microsoft Entra ID voorheen Azure Active Directory (Azure AD) werd genoemd.

Systeemvereisten

  • Windows 8, Windows 8.1, Windows 10, Windows 11

  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Voor dit onderdeel is het meest recente Microsoft ODBC-stuurprogramma 17 voor SQL Serververeist.

Als u de bcp versie wilt controleren, voert u bcp -v opdracht uit en controleert u of 15.0.4298.1 of hoger wordt gebruikt.

Notitie

sqlcmd en bcp- zijn ook beschikbaar in Linux. Zie Sql Server-opdrachtregelprogramma's sqlcmd en bcp installeren op Linuxvoor meer informatie.

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 Azure Active Directory 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]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 ) ]
    [-w]
    [-x]

Opdrachtregelopties

database_name

De naam van de database waarin de opgegeven tabel of weergave zich bevindt. Als dit niet is opgegeven, is dit de standaarddatabase voor de gebruiker.

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 schema niet is opgegeven 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.

tabelnaam

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). Alleen weergaven waarin alle kolommen naar dezelfde tabel verwijzen, kunnen worden gebruikt als doelweergaven. 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. queryout moet ook worden opgegeven bij het bulksgewijs kopiëren van gegevens 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

Kopieën van een bestand naar de databasetabel of -weergave. Hiermee geeft u de richting van de bulkkopie.

buiten

Kopieert van 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. Bij het extraheren van gegevens vertegenwoordigt het hulpprogramma bcp een lege tekenreeks als een null- en een null-tekenreeks als een lege tekenreeks.

gegevensbestand

Het volledige pad van het gegevensbestand. Wanneer gegevens bulksgewijs worden geïmporteerd in SQL Server, bevat het gegevensbestand de gegevens die moeten worden gekopieerd naar de opgegeven tabel of weergave. Wanneer gegevens bulksgewijs worden geëxporteerd 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

Kopieën uit een query en moeten alleen worden opgegeven wanneer gegevens bulksgewijs uit een query worden gekopieerd.

opmaak

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. De format-optie vereist de -f-optie; voor het maken van een XML-indelingsbestand is ook de -x-optie vereist. Zie Create a Format File (SQL Server)voor meer informatie. U moet nul opgeven als de waarde (format nul).

-pakket_grootte

Hiermee geeft u het aantal bytes, per netwerkpakket, verzonden naar en van de server. Een serverconfiguratieoptie kan worden ingesteld met behulp van SQL Server Management Studio (of de sp_configure door het systeem opgeslagen procedure). De serverconfiguratieoptie kan echter afzonderlijk worden overschreven door deze optie te gebruiken. packet_size kan van 4.096 bytes tot 65.535 bytes zijn; de standaardwaarde is 4096.

Grotere pakketgrootte kan de prestaties van bulkkopiebewerkingen verbeteren. Als een groter pakket wordt aangevraagd maar niet kan worden verleend, wordt de standaardwaarde gebruikt. De prestatiestatistieken die worden gegenereerd door het bcp-hulpprogramma tonen de gebruikte pakketgrootte.

-b batch_grootte

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 worden alle rijen in het gegevensbestand geïmporteerd 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.

Gebruik deze optie niet met de optie -h "ROWS_PER_BATCH=<bb>".

-c

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

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

-C { ACP | OEM | RAW | code_page }

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.

Notitie

U wordt aangeraden een sorteringsnaam op te geven voor elke kolom in een indelingsbestand, behalve wanneer u wilt dat de optie 65001 prioriteit heeft ten opzichte van de specificatie van de sorterings-/codepagina.

Waarde van codepagina Beschrijving
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Standaardcodepagina die door de client wordt gebruikt. Dit is de standaardcodepagina die wordt gebruikt als -C niet is opgegeven.
RAUW Er wordt geen conversie van de ene codepagina naar de andere uitgevoerd. Dit is de snelste optie omdat er geen conversie plaatsvindt.
code_page Specifiek codepaginanummer; bijvoorbeeld 850.

Versies vóór versie 13 (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.

-d database_name

Hiermee geeft u de database waarmee verbinding moet worden gemaakt. Standaard maakt bcp- verbinding met de standaarddatabase van de gebruiker. Als -d <database_name> en een driedelige naam (database_name.schema.table, doorgegeven als de eerste parameter aan bcp) zijn opgegeven, 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.

-D

Zorgt ervoor dat de waarde die wordt doorgegeven aan de bcp -S optie wordt geïnterpreteerd als een naam van een gegevensbron (DSN). Een DSN kan worden gebruikt om stuurprogrammaopties in te sluiten om opdrachtregels te vereenvoudigen, stuurprogrammaopties af te dwingen die niet anders toegankelijk zijn vanaf de opdrachtregel, zoals MultiSubnetFailover, of om gevoelige referenties te beschermen tegen detectie als opdrachtregelargumenten. Zie DSN-ondersteuning in sqlcmd en bcp in Verbinding maken met sqlcmdvoor meer informatie.

-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 deze optie niet wordt 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.

-E

Hiermee geeft u op dat de identiteitswaarde of -waarden in het geïmporteerde gegevensbestand moeten worden gebruikt voor de identiteitskolom. Als -E niet wordt opgegeven, worden de identiteitswaarden voor deze kolom in het geïmporteerde gegevensbestand genegeerd en worden in SQL Server automatisch unieke waarden toegewezen 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.

-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 -f wordt gebruikt met de optie format, wordt de 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 Create a Format File (SQL Server)voor meer informatie.

  • Als deze wordt gebruikt met de optie in of out, is voor -f een bestaand indelingsbestand vereist.

    Notitie

    Het gebruik van een formaatbestand met de optie in of out is optioneel. Bij afwezigheid van de optie -f, als -n, -c, -wof -N niet is opgegeven, vraagt de opdracht om opmaakinformatie en kunt u uw antwoorden opslaan in een indelingsbestand (met als standaardbestandsnaam bcp.fmt).

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

-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. Deze parameter vereist een waarde die groter is dan (>) 0, maar kleiner dan (<) of gelijk aan (=) de totale getalrijen. Als deze parameter ontbreekt, 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 is gebaseerd op 1.

-G

alleen van toepassing op: Azure SQL Database, SQL-database in Microsoft Fabric en Azure Synapse Analytics.

Deze schakelaar wordt door de client gebruikt om aan te geven dat de gebruiker wordt geauthenticeerd met Microsoft Entra ID. Voor de -G-switch is versie 14.0.3008.27 of nieuwere versies vereist. Voer bcp -vuit om uw versie te bepalen. Zie Microsoft Entra-verificatie gebruiken met SQL Database of Azure Synapse Analytics of -verificatie voor SQL Database in Fabricvoor meer informatie.

Belangrijk

Interactieve Microsoft Entra-verificatie wordt momenteel niet ondersteund in Linux of macOS. Geïntegreerde Microsoft Entra-verificatie vereist Microsoft ODBC-stuurprogramma 17 voor SQL Server versie 17.6.1 en latere versies, en een correct geconfigureerde Kerberos-omgeving.

Fooi

Als u wilt controleren of uw versie van bcp- ondersteuning voor Microsoft Entra-verificatie bevat, typt u bcp --help en controleert u of u -G in de lijst met beschikbare argumenten ziet.

  • gebruikersnaam en wachtwoord van Microsoft Entra

    Wanneer u een Microsoft Entra-gebruikersnaam en -wachtwoord wilt gebruiken, kunt u de optie -G opgeven en ook de gebruikersnaam en het wachtwoord gebruiken door de opties voor -U en -P op te geven.

    In het volgende voorbeeld worden gegevens geëxporteerd met de gebruikersnaam en wachtwoordreferenties van Microsoft Entra. In het voorbeeld worden tabel-bcptest geëxporteerd uit de database testdb van de Azure-server aadserver.database.windows.net en worden de gegevens opgeslagen in het bestand c:\last\data1.dat:

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    

    In het volgende voorbeeld worden gegevens geïmporteerd met behulp van de referenties van een Microsoft Entra-gebruiker. In het voorbeeld worden gegevens uit bestand c:\last\data1.dat geïmporteerd in tabel bcptest voor database-testdb op Azure-server aadserver.database.windows.net met behulp van een Gebruikersnaam en wachtwoord van Microsoft Entra:

    bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    
  • Microsoft Entra geïntegreerd

    Geef voor geïntegreerde Microsoft Entra-verificatie de optie -G zonder gebruikersnaam of wachtwoord op. Voor deze configuratie is vereist dat het huidige Windows-gebruikersaccount (het account waarop de bcp opdracht wordt uitgevoerd) federatief is met Microsoft Entra-id:

    In het volgende voorbeeld worden gegevens geëxporteerd met geïntegreerde Microsoft Entra-verificatie. In het voorbeeld wordt de tabel bcptest uit de database testdb op de logische server aadserver.database.windows.net geëxporteerd en worden de gegevens opgeslagen in het bestand c:\last\data2.dat, met behulp van Windows-referenties die zijn gefedereerd met Microsoft Entra ID.

    bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    

    In het volgende voorbeeld worden gegevens geïmporteerd met geïntegreerde Microsoft Entra-verificatie. In het voorbeeld worden gegevens uit file table c:\last\data2.dat geïmporteerd in tabel bcptest in de database testdb op de logische server aadserver.database.windows.net, door gebruik te maken van Windows-referenties die zijn gefedereerd met Microsoft Entra ID.

    bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    
  • Microsoft Entra Managed Service Identity

    Belangrijk

    bcp is nauw gekoppeld aan het stuurprogramma. De primaire versies van zowel bcp- als het stuurprogramma waarmee een DSN wordt gemaakt, moeten hetzelfde zijn. Voer bcp -vuit om uw versie te bepalen.

    Voor het exporteren van gegevens via bcp- met een Managed Service Identity in Windows moet een DSN worden geconfigureerd.

    Een DSN configureren op een computer met Windows:

    1. Druk op de Windows-toets op het toetsenbord
    2. Typ ODBC en selecteer de juiste versie van de ODBC-gegevensbronbeheerder
    3. Selecteer het tabblad User DSN of het tabblad System DSN
    4. Selecteer Toevoegen en volg de aanwijzingen
    5. Wanneer u wordt gevraagd om een verificatietype, selecteert u Azure Managed Service Identity-verificatie
    6. Als u een door de gebruiker toegewezen beheerde identiteit hebt, plakt u de Object (principal) ID van de identiteit in het vak aanmeldings-id onder aan het tabblad Verificatie
    7. Ga door met het volgen van de aanwijzingen om uw DSN te configureren

    Zie DSN's maken en bewerken in de gebruikersinterfacevoor een volledig overzicht, inclusief schermopnamen.

    Zodra de DSN is geconfigureerd, kan bcp- vervolgens worden aangeroepen met behulp van -D vlag om aan te geven dat de waarde die is doorgegeven voor -S een DSN is.

    bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
    

  • Microsoft Entra ID-toegangstoken

    Gebruikers van bcp (17.8 en latere versies) kunnen ook worden geverifieerd met een token. In de volgende voorbeelden wordt PowerShell op Linux gebruikt om een toegangstoken op te halen.

    In dit voorbeeld wordt een toegangstoken opgehaald en in een bestand opgeslagen om gegevens te exporteren met behulp van een door het systeem toegewezen beheerde identiteit.

    Connect-AzAccount -Identity
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    

    In dit voorbeeld wordt een Client ID doorgegeven aan de parameter -AccountId van Connect-AzAccount om een toegangstoken op te halen en in een tokenbestand te plaatsen. Het token wordt vervolgens gebruikt om gegevens te exporteren met behulp van de opgegeven door de gebruiker toegewezen beheerde identiteit.

    Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity'
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    
  • interactieve van Microsoft Entra

    Met interactieve Microsoft Entra-verificatie, beschikbaar voor alle Azure SQL en SQL Server 2022+, kunt u een interactief dialoogvenster gebruiken om te verifiëren, wat ook ondersteuning biedt voor meervoudige verificatie.

    Interactieve Verificatie van Microsoft Entra vereist bcpversie 15.0.1000.34 of hoger, evenals ODBC-versie 17.2 of hoger.

    Als u interactieve verificatie wilt inschakelen, geeft u de -G optie op met alleen gebruikersnaam (-U) en geen wachtwoord.

    In het volgende voorbeeld worden gegevens geëxporteerd met interactieve Microsoft Entra-verificatie, waaronder het opgeven van de gebruikersnaam van een Microsoft Entra-account.

    Voor de interactieve modus moet een wachtwoord handmatig worden ingevoerd of voor accounts waarvoor meervoudige verificatie is ingeschakeld, de geconfigureerde MFA-verificatiemethode voltooien.

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
    

    Als u een Microsoft Entra-gebruiker gebruikt die een Windows-account is van een federatief domein, moet de gebruikersnaam die in de opdrachtregel is ingevoerd, het domein bevatten (bijvoorbeeld joe@contoso.com):

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
    

    Als gastgebruikers bestaan in een specifieke Microsoft Entra-tenant en deel uitmaken van een groep die bestaat in SQL Database met databasemachtigingen voor het uitvoeren van de opdracht bcp, wordt hun alias voor gastgebruikers gebruikt (bijvoorbeeld keith0@adventure-works.com).

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

Hiermee specificeert u de hint(s) die moeten worden gebruikt tijdens een bulkimport van gegevens in een tabel of view.

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

    De sorteervolgorde van de gegevens in het gegevensbestand. De prestaties van bulkimport worden verbeterd als de gegevens die worden geïmporteerd, 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 is, wordt de ORDER-component genegeerd. De opgegeven kolomnamen moeten geldige kolomnamen in de doeltabel zijn. 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 -b niet is opgegeven, 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 bulksgewijs wordt verkregen voor de duur van de bulkloadbewerking; anders wordt een vergrendeling op rijniveau verkregen. Deze hint verbetert de prestaties aanzienlijk, omdat het vasthouden van een vergrendeling voor de duur van de bulkkopiebewerking het aantal vergrendelingen op de tabel vermindert. Een tabel kan gelijktijdig worden geladen vanaf meerdere clients als de tabel geen indexen heeft en TABLOCK is opgegeven. Standaard wordt het vergrendelingsgedrag bepaald door de tabeloptie tabelvergrendeling bij bulksgewijs laden.

    Notitie

    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. Raadpleeg de conceptuele artikelen over columnstore-indexen voor meer details.

  • CHECK_CONSTRAINTS

    Hiermee geeft u op dat alle beperkingen voor de doeltabel of weergave moeten worden gecontroleerd tijdens de bulkimportbewerking. Zonder de CHECK_CONSTRAINTS hint worden alle CHECK- en FOREIGN KEY-beperkingen genegeerd, en na de bewerking wordt de beperking op de tabel gemarkeerd als niet-vertrouwd.

    Notitie

    UNIQUE, PRIMARY KEY en NOT NULL-beperkingen worden altijd afgedwongen.

    Op een bepaald moment moet u de beperkingen voor de hele tabel controleren. Als de tabel vóór de bulksgewijze importbewerking niet beschikbaar was, kunnen de kosten voor het opnieuwvalideren van de beperking groter zijn dan de kosten voor het toepassen van CHECK-beperkingen op de incrementele gegevens. Daarom raden we u aan om de beperkingscontrole normaal gesproken in te schakelen tijdens een incrementele bulkimport.

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

    Notitie

    bcp- dwingt nu gegevensvalidatie en gegevenscontroles af die ertoe kunnen leiden dat scripts mislukken als ze worden uitgevoerd op ongeldige gegevens in een gegevensbestand.

    Notitie

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

  • FIRE_TRIGGERS

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

-i input_file

Hiermee geeft u de naam van een antwoordbestand, met de antwoorden op de vragen over de opdrachtprompt voor elk gegevensveld wanneer een bulkkopie wordt uitgevoerd 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.

-k

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

-K toepassingsintentie (application_intent)

Declareert het workloadtype van de toepassing bij het maken van verbinding met een server. De enige waarde die mogelijk is, is ReadOnly. Als -K niet is opgegeven, biedt het hulpprogramma bcp 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 opgegeven waarde niet numeriek is of niet in dat bereik valt, bcp een foutbericht genereert. Een waarde van 0 geeft een oneindige time-out op.

-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. Deze parameter vereist een waarde groter dan (>) 0, maar kleiner dan (<) of gelijk aan (=) het nummer van de laatste rij. Als deze parameter ontbreekt, is de standaardwaarde de laatste rij van het bestand.

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

-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 alleen op de server kunnen worden gedetecteerd, zoals schendingen van beperkingen.

Een rij die niet kan worden gekopieerd door het bcp-hulpprogramma wordt genegeerd en wordt geteld als één fout. Als deze optie niet is opgenomen, is de standaardwaarde 10.

Notitie

De -m optie is ook niet van toepassing op het converteren van het valuta of bigint gegevenstype.

-n

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

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

-N

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)).

De waarschuwing kan worden genegeerd. Een manier om deze waarschuwing op te lossen is door -n te gebruiken in plaats van -N.

-o output_file

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.

-P-wachtwoord

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

Belangrijk

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. In plaats daarvan, nadat u bcp en hebt opgegeven met de optie -U en andere schakelopties (niet -Popgeven), drukt u op ENTER, en de opdracht zal om een wachtwoord vragen. 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.

-q

Hiermee wordt de instructie SET QUOTED_IDENTIFIER ON 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 Opmerkingenverderop in dit artikel voor meer informatie.

-r row_term

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

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.

-R

Hiermee geeft u op dat valuta-, datum- en tijdgegevens bulksgewijs naar SQL Server worden gekopieerd met behulp van de regionale indeling die is gedefinieerd voor de landinstelling van de clientcomputer. Standaard worden landinstellingen genegeerd.

-S server_name [\instance_name]

Hiermee specificeert u de instantie van SQL Server waarmee verbinding moet worden gemaakt. Als er geen server is opgegeven, maakt het hulpprogramma bcp verbinding met het standaardexemplaren van SQL Server op de lokale computer. Deze optie is vereist wanneer een bcp opdracht wordt uitgevoerd 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_nameop.

-t field_term

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

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.

-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 -T niet is opgegeven, moet u -U en -P opgeven om verbinding te kunnen maken.

Belangrijk

Wanneer het hulpprogramma bcp verbinding maakt met SQL Server met een vertrouwde verbinding met behulp van geïntegreerde beveiliging, gebruikt u de optie -T (vertrouwde verbinding) in plaats van de gebruikersnaam en combinatie van wachtwoord. Wanneer het hulpprogramma bcp verbinding maakt met SQL Database of Azure Synapse Analytics, wordt windows-verificatie of Microsoft Entra-verificatie niet ondersteund. Gebruik de opties voor -U en -P.

-U-login_id

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

-v

Rapporteert het bcp versienummer en copyright van het hulpprogramma.

-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160)

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)

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

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

-w

Voert de bulksgewijze kopieerbewerking uit met Unicode-tekens. Met deze optie wordt niet om invoer voor elk veld gevraagd; het gebruikt nchar als opslagtype, geen voorvoegsels, \t (tabteken) als veldscheidingsteken en \n (regeleinde) als rijeindteken. -w is niet compatibel met -c.

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

-x

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

Opmerkingen

  • De bcp 13.0-client wordt geïnstalleerd wanneer u Microsoft SQL Server 2019-hulpprogramma's (15.x) installeert. Als hulpprogramma's zijn geïnstalleerd voor meerdere versies van SQL Server, afhankelijk van de volgorde van de waarden van de omgevingsvariabele PATH, gebruikt u mogelijk de eerdere bcp-client in plaats van de bcp 13.0-client. Deze omgevingsvariabele definieert de set mappen die door Windows worden gebruikt om te zoeken naar uitvoerbare bestanden. Als u wilt weten welke versie u gebruikt, voert u de opdracht bcp -v uit bij de Windows-opdrachtprompt. Zie voor meer informatie over het instellen van het opdrachtpad in de omgevingsvariabele PATH omgevingsvariabelen of zoeken naar omgevingsvariabelen in Windows Help.

    Als u wilt controleren of de nieuwste versie van het hulpprogramma bcp wordt uitgevoerd, moet u oudere versies van het hulpprogramma bcp verwijderen.

    Als u wilt bepalen waar alle versies van het hulpprogramma bcp zijn geïnstalleerd, typt u de opdrachtprompt:

    where bcp.exe
    
  • Het hulpprogramma bcp kan ook afzonderlijk worden gedownload van het Microsoft SQL Server 2016 Feature Pack. Selecteer ENU\x64\MsSqlCmdLnUtils.msi of ENU\x86\MsSqlCmdLnUtils.msi.

  • XML-indelingsbestanden worden alleen ondersteund wanneer SQL Server-hulpprogramma's samen met SQL Server Native Client worden geïnstalleerd.

  • Zie SQL-opdrachtpromptprogramma's (Database Engine)voor informatie over waar u het hulpprogramma bcp kunt vinden of uitvoeren en over de syntaxisconventies van de opdrachtpromptprogramma's.

  • Zie Gegevens voorbereiden voor bulksgewijs exporteren of importerenvoor informatie over het voorbereiden van gegevens voor bulkimport- of exportbewerkingen.

  • Zie Vereisten voor minimale logboekregistratie bij bulkimportvoor informatie over wanneer rij-invoegbewerkingen die worden uitgevoerd door bulkimport in het transactielogboek worden geregistreerd.

  • Extra speciale tekens gebruiken

    De tekens <, >, |, &en ^ zijn speciale opdrachtshelltekens en moeten voorafgegaan worden door het escapeteken (^) of tussen aanhalingstekens worden geplaatst wanneer ze in een tekenreeks worden gebruikt (bijvoorbeeld "StringContaining&Symbol"). Als u aanhalingstekens gebruikt om een tekenreeks tussen een van de speciale tekens te plaatsen, worden de aanhalingstekens ingesteld als onderdeel van de waarde van de omgevingsvariabele.

Ondersteuning voor systeemeigen gegevensbestanden

In SQL Server ondersteunt het hulpprogramma bcp systeemeigen gegevensbestanden die compatibel zijn met SQL Server-versies vanaf SQL Server 2000 (8.x) en hoger.

Berekende kolommen en tijdstempelkolommen

Waarden in het gegevensbestand dat wordt geïmporteerd voor berekende of tijdstempel kolommen worden genegeerd en SQL Server wijst automatisch waarden toe. Als het gegevensbestand geen waarden bevat voor de berekende of tijdstempel kolommen in de tabel, gebruikt u een indelingsbestand om op te geven dat de berekende of tijdstempel kolommen in de tabel moeten worden overgeslagen bij het importeren van gegevens; SQL Server wijst automatisch waarden toe voor de kolom.

Berekende en tijdstempels kolommen worden zoals gebruikelijk bulksgewijs gekopieerd van SQL Server naar een gegevensbestand.

Id's opgeven die spaties of aanhalingstekens bevatten

SQL Server-id's kunnen tekens bevatten, zoals ingesloten spaties en aanhalingstekens. Deze id's moeten als volgt worden behandeld:

  • Wanneer u een id of bestandsnaam opgeeft die een spatie of aanhalingsteken bevat bij de opdrachtprompt, plaatst u de id tussen aanhalingstekens ("").

    Met de volgende bcp out opdracht maakt u bijvoorbeeld een gegevensbestand met de naam Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Als u een databasenaam wilt opgeven die een spatie of aanhalingsteken bevat, moet u de optie -q gebruiken.

  • Voor namen van eigenaars, tabellen of weergaven die ingesloten spaties of aanhalingstekens bevatten, heeft u de volgende opties:

    • Geef de optie -q op, of

    • Plaats de naam van de eigenaar, tabel of weergave tussen haakjes ([]) tussen de aanhalingstekens.

Gegevensvalidatie

bcp- dwingt nu gegevensvalidatie en gegevenscontroles af die ertoe kunnen leiden dat scripts mislukken als ze worden uitgevoerd op ongeldige gegevens in een gegevensbestand. Zo controleert bcp nu dat:

  • De systeemeigen weergaven van float- of echte gegevenstypen zijn geldig.

  • Unicode-gegevens hebben een even bytelengte.

Formulieren van ongeldige gegevens die bulksgewijs kunnen worden geïmporteerd in eerdere versies van SQL Server, kunnen nu niet worden geladen; overwegende dat in eerdere versies de fout pas is opgetreden wanneer een client toegang probeerde te krijgen tot de ongeldige gegevens. De toegevoegde validatie minimaliseert verrassingen bij het uitvoeren van gegevensopvragingen na bulkverwerking.

SQLXML-documenten bulksgewijs exporteren of importeren

Als u SQLXML-gegevens bulksgewijs wilt exporteren of importeren, gebruikt u een van de volgende gegevenstypen in uw indelingsbestand.

Gegevenstype Effect
SQLCHAR of SQLVARYCHAR De gegevens worden verzonden op de clientcodepagina of op de codepagina die wordt geïmpliceerd door de sortering). Het effect is hetzelfde als het opgeven van de -c switch zonder een indelingsbestand op te geven.
SQLNCHAR of SQLNVARCHAR De gegevens worden verzonden als Unicode. Het effect is hetzelfde als het opgeven van de -w switch zonder een indelingsbestand op te geven.
SQLBINARY of SQLVARYBIN De gegevens worden zonder conversie verzonden.

Machtigingen

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

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

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

    Notitie

    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_TRIGGER hint is niet opgegeven.

    Notitie

    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.

Notitie

Het vereisen van alter table-machtigingen voor de doeltabel was nieuw in SQL Server 2005 (9.x). Deze nieuwe vereiste kan ertoe leiden dat bcp scripts die geen triggers afdwingen en beperkingscontroles niet uitvoeren als het gebruikersaccount geen ALTER-tabelmachtigingen voor de doeltabel heeft.

Aanbevolen procedures voor tekenmodus (-c) en systeemeigen modus (-n)

Deze sectie bevat aanbevelingen voor de tekenmodus (-c) en de systeemeigen modus (-n).

  • (Beheerder/gebruiker) Gebruik indien mogelijk een systeemeigen indeling (-n) om het scheidingsteken te voorkomen. Gebruik het native formaat voor exporteren en importeren met behulp van SQL Server. Gegevens exporteren uit SQL Server met behulp van de optie -c of -w als de gegevens worden geïmporteerd in een niet-SQL Server-database.

  • (Beheerder) Controleer gegevens wanneer u BCP OUT gebruikt. Als u bijvoorbeeld BCP OUT, BCP IN en vervolgens BCP OUT gebruikt, controleert u of de gegevens correct worden geëxporteerd en worden de afsluitwaarden niet gebruikt als onderdeel van een bepaalde gegevenswaarde. Overweeg om de standaardeindtekens (met behulp van -t- en -r-opties) te overschrijven met willekeurige hexadecimale waarden om conflicten tussen eindwaarden en gegevenswaarden te voorkomen.

  • (Gebruiker) Gebruik een lange en unieke afsluiter (een willekeurige reeks bytes of tekens) om de kans op een conflict met de werkelijke tekenreekswaarde te minimaliseren. U kunt dit doen met behulp van de -t- en -r-opties.

Voorbeelden

In de voorbeelden in deze sectie wordt gebruikgemaakt van de WideWorldImporters voorbeelddatabase voor SQL Server 2016 (13.x) en latere versies, Azure SQL Database en Azure SQL Managed Instance. WideWorldImporters kan worden gedownload van https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Zie RESTORE-instructies voor de syntaxis om de voorbeelddatabase te herstellen.

Voorbeeldtestvoorwaarden

Tenzij anders is opgegeven, wordt in de voorbeelden ervan uitgegaan dat u Windows-verificatie gebruikt en een vertrouwde verbinding hebt met het serverexemplaren waarop u de opdracht bcp uitvoert. In veel voorbeelden wordt een map met de naam D:\BCP gebruikt.

Met het volgende script maakt u een lege kopie van de WideWorldImporters.Warehouse.StockItemTransactions tabel en voegt u vervolgens een primaire-sleutelbeperking toe. Voer het volgende T-SQL-script uit in SQL Server Management Studio (SSMS)

USE WideWorldImporters;
GO

SET NOCOUNT ON;

IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Warehouse.StockItemTransactions_bcp')
BEGIN
    SELECT * INTO WideWorldImporters.Warehouse.StockItemTransactions_bcp
    FROM WideWorldImporters.Warehouse.StockItemTransactions
    WHERE 1 = 2;

    ALTER TABLE Warehouse.StockItemTransactions_bcp
    ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp PRIMARY KEY NONCLUSTERED
    (StockItemTransactionID ASC);
END

U kunt de StockItemTransactions_bcp-tabel afkorten indien nodig.

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

Een. Versie van het bcp-hulpprogramma identificeren

Voer bij een opdrachtprompt de volgende opdracht in:

bcp -v

B. Tabelrijen kopiëren naar een gegevensbestand (met een vertrouwde verbinding)

In de volgende voorbeelden ziet u de optie out in de WideWorldImporters.Warehouse.StockItemTransactions tabel.

  • Basic

    In dit voorbeeld wordt een gegevensbestand met de naam StockItemTransactions_character.bcp aangemaakt en worden de tabelgegevens erin gekopieerd met behulp van het -tekenset in-formaat.

    Voer bij een opdrachtprompt de volgende opdracht in:

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • uitgevouwen

    In dit voorbeeld wordt een gegevensbestand met de naam StockItemTransactions_native.bcp gemaakt, en worden de tabelgegevens erin gekopieerd met behulp van de standaard-indeling. In het voorbeeld wordt ook het maximum aantal syntaxisfouten, een foutenbestand en een uitvoerbestand opgegeven.

    Voer bij een opdrachtprompt de volgende opdracht in:

    bcp WideWorldImporters.Warehouse.StockItemTransactions OUT D:\BCP\StockItemTransactions_native.bcp -m 1 -n -e D:\BCP\Error_out.log -o D:\BCP\Output_out.log -S -T
    

Bekijk Error_out.log en Output_out.log. Error_out.log moet leeg zijn. Vergelijk de bestandsgrootten tussen StockItemTransactions_character.bcp en StockItemTransactions_native.bcp.

C. Tabelrijen kopiëren naar een gegevensbestand (met verificatie in gemengde modus)

In het volgende voorbeeld ziet u de optie out in de tabel WideWorldImporters.Warehouse.StockItemTransactions. In dit voorbeeld wordt een gegevensbestand genaamd StockItemTransactions_character.bcp gemaakt en worden de tabeldata gekopieerd in het tekenformaat.

In het voorbeeld wordt ervan uitgegaan dat u verificatie in de gemengde modus gebruikt en dat u de -U switch moet gebruiken om uw aanmeldings-id op te geven. Gebruik ook, tenzij u verbinding maakt met het standaardexemplaar van SQL Server op de lokale computer, de -S-switch om de systeemnaam en eventueel een exemplaarnaam op te geven.

Voer bij een opdrachtprompt de volgende opdracht in: (Het systeem vraagt u om uw wachtwoord.)

bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D. Gegevens kopiëren van een bestand naar een tabel

In de volgende voorbeelden ziet u de optie in in de WideWorldImporters.Warehouse.StockItemTransactions_bcp tabel met behulp van bestanden die u eerder hebt gemaakt.

  • Basis

    In dit voorbeeld wordt het StockItemTransactions_character.bcp gegevensbestand gebruikt dat eerder is gemaakt.

    Voer bij een opdrachtprompt de volgende opdracht in:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T
    
  • Uitgebreid

    In dit voorbeeld wordt het StockItemTransactions_native.bcp gegevensbestand gebruikt dat eerder is gemaakt. Het voorbeeld ook: gebruik de hint TABLOCK, geeft de batchgrootte, het maximum aantal syntaxisfouten, een foutenbestand en een uitvoerbestand op.

    Voer bij een opdrachtprompt de volgende opdracht in:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\BCP\Error_in.log -o D:\BCP\Output_in.log -S -T
    

    Bekijk Error_in.log en Output_in.log.

E. Een specifieke kolom kopiëren naar een gegevensbestand

Als u een specifieke kolom wilt kopiëren, kunt u de optie queryout gebruiken. In het volgende voorbeeld wordt alleen de kolom StockItemTransactionID van de Warehouse.StockItemTransactions tabel gekopieerd naar een gegevensbestand.

Voer bij een opdrachtprompt de volgende opdracht in:

bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\BCP\StockItemTransactionID_c.bcp -c -T

F. Een specifieke rij kopiëren naar een gegevensbestand

Als u een specifieke rij wilt kopiëren, kunt u de optie queryout gebruiken. In het volgende voorbeeld wordt alleen de rij gekopieerd voor de persoon met de naam Amy Trefl uit de WideWorldImporters.Application.People tabel in een gegevensbestand Amy_Trefl_c.bcp.

Notitie

De -d-switch wordt gebruikt om de database te identificeren.

Voer bij een opdrachtprompt de volgende opdracht in:

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\BCP\Amy_Trefl_c.bcp -d WideWorldImporters -c -T

G. Gegevens kopiëren van een query naar een gegevensbestand

Als u de resultatenset wilt kopiëren van een Transact-SQL instructie naar een gegevensbestand, gebruikt u de optie queryout. In het volgende voorbeeld worden de namen uit de WideWorldImporters.Application.People tabel gekopieerd, gesorteerd op volledige naam, in het People.txt gegevensbestand.

Notitie

De schakeloptie -t wordt gebruikt om een door komma's gescheiden bestand te creëren.

Voer bij een opdrachtprompt de volgende opdracht in:

bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\BCP\People.txt -t, -c -T

H. Indelingsbestanden maken

In het volgende voorbeeld worden drie verschillende indelingsbestanden gemaakt voor de Warehouse.StockItemTransactions tabel in de WideWorldImporters-database. Controleer de inhoud van elk gemaakt bestand.

Voer bij een opdrachtprompt de volgende opdrachten in:

REM non-XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.fmt -c -T

REM non-XML native format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_n.fmt -n -T

REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.xml -x -c -T

Notitie

Als u de -x-switch wilt gebruiken, moet u een bcp 9.0-client gebruiken. Zie 'Opmerkingen' voor meer informatie over het gebruik van de bcp 9.0-client.

Voor meer informatie, zie Gebruik Niet-XML-indelingsbestanden (SQL Server) en XML-indelingsbestanden (SQL Server).

I. Een indelingsbestand gebruiken om bulksgewijs te importeren met bcp

Als u een eerder gemaakt indelingsbestand wilt gebruiken bij het importeren van gegevens in een exemplaar van SQL Server, gebruikt u de -f-switch met de optie in. Met de volgende opdracht wordt bijvoorbeeld bulksgewijs de inhoud van een gegevensbestand, StockItemTransactions_character.bcp, gekopieerd naar een kopie van de Warehouse.StockItemTransactions_bcp tabel met behulp van het eerder gemaakte indelingsbestand, StockItemTransactions_c.xml.

Notitie

De -L-switch wordt gebruikt om alleen de eerste 100 records te importeren.

Voer bij een opdrachtprompt de volgende opdracht in:

bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\BCP\StockItemTransactions_character.bcp -L 100 -f D:\BCP\StockItemTransactions_c.xml -T

Notitie

Indelingsbestanden zijn handig wanneer de velden van het gegevensbestand verschillen van de tabelkolommen; Bijvoorbeeld in hun nummer, volgorde of gegevenstypen. Zie Bestanden opmaken voor het importeren of exporteren van gegevens (SQL Server)voor meer informatie.

J. Een codepagina opgeven

In het volgende voorbeeld van gedeeltelijke code wordt bcp geïmporteerd waarbij de codepagina 65001 wordt opgegeven.

bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...

K. Voorbeeld van een uitvoerbestand met behulp van aangepaste veld- en rijeindtekens.

In dit voorbeeld ziet u twee voorbeeldbestanden die zijn gegenereerd door bcp met behulp van aangepaste veld- en rijeindtekens.

  1. Maak een tabel dbo.T1 in de tempdb-database, met twee kolommen, ID en Name.

    USE tempdb;
    GO
    
    CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR(20));
    GO
    
    INSERT INTO dbo.T1 VALUES (1, N'Natalia');
    INSERT INTO dbo.T1 VALUES (2, N'Mark');
    INSERT INTO dbo.T1 VALUES (3, N'Randolph');
    GO
    
  2. Genereer een uitvoerbestand uit de voorbeeldtabel dbo.T1met behulp van een aangepast veldeindteken.

    In dit voorbeeld wordt de servernaam MYSERVERopgegeven, en wordt de aangepaste veldafscheider door -t ,gespecificeerd.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
    

    Hier is het resultatenoverzicht.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Genereer een uitvoerbestand van de voorbeeldtabel dbo.T1met een aangepast veldeindteken en een aangepast rijeindteken.

    In dit voorbeeld is de servernaam MYSERVER, wordt het aangepaste veldeindteken opgegeven door -t, ', en wordt het aangepaste rijeindteken opgegeven door -r :.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
    

    Dit is de resultaatset.

    1,Natalia:2,Mark:3,Randolph:
    

    Notitie

    Het rijeindteken wordt altijd toegevoegd, zelfs aan de laatste record. Het veldeindteken wordt echter niet toegevoegd aan het laatste veld.

Aanvullende voorbeelden

De volgende artikelen bevatten voorbeelden van het gebruik van bcp-:

Overwegingen en beperkingen

  • Het hulpprogramma bcp heeft een beperking dat in het foutbericht slechts 512 bytetekens worden weergegeven. Alleen de eerste 512 bytes van het foutbericht worden weergegeven.

Hulp krijgen

Bijdragen aan SQL-documentatie

Wist u dat u zelf SQL-inhoud kunt bewerken? Als u dit doet, helpt u niet alleen onze documentatie te verbeteren, maar wordt u ook erkend als bijdrager aan de pagina.

Zie Bijdragen aan sql Server-documentatie voor meer informatie