Dela via


bcp-verktyg

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Verktyget för masskopieringsprogram (bcp) masskopierar data mellan en instans av Microsoft SQL Server och en datafil i ett användarangivet format.

Information om hur du använder bcp i Linux finns i Installera kommandoradsverktygen sqlcmd och bcp SQL Server i Linux. Detaljerad information om hur du använder bcp med Azure Synapse Analytics finns i Läsa in data med bcp.

Bcp-verktyget kan användas för att importera ett stort antal nya rader till SQL Server-tabeller eller för att exportera data från tabeller till datafiler. Förutom när det queryout används med alternativet kräver verktyget ingen kunskap om Transact-SQL. Om du vill importera data till en tabell måste du antingen använda en formatfil som skapats för tabellen eller förstå tabellens struktur och vilka typer av data som är giltiga för dess kolumner.

Anmärkning

Om du använder bcp för att säkerhetskopiera dina data skapar du en formatfil för att registrera dataformatet. bcp-datafilerinnehåller ingen schema- eller formatinformation, så om en tabell eller vy tas bort och du inte har någon formatfil kanske du inte kan importera data.

De syntaxkonventioner som används för bcp-syntaxen finns iTransact-SQL syntaxkonventioner.

Bcp på Linux och macOS finns i Överväganden för bcp i Linux och macOS.

Ladda ned den senaste versionen av bcp-verktyget

Kommandoradsverktygen är allmän tillgänglighet (GA), men de släpps med installationspaketet för SQL Server 2019 (15.x) och senare versioner.

Versionsinformation

  • Versionsnummer: 15.0.4298.1
  • Versionsnummer: 15.0.4298.1
  • Utgivningsdatum: 7 april 2023

bcp stöder Microsoft Entra-autentisering, inklusive stöd för multifaktorautentisering (MFA) för Azure SQL Database, SQL Database i Microsoft Fabric och Azure Synapse Analytics.

Anmärkning

Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).

Systemkrav

  • Windows 8, Windows 8.1, Windows 10, Windows 11
  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Den här komponenten kräver den senaste Microsoft ODBC-drivrutinen 17 för SQL Server.

Kontrollera bcp-versionen genom att köra bcp -v kommandot och bekräfta att 15.0.4298.1 eller senare används.

Stöd för TDS 8.0

Förhandsversionen av SQL Server 2025 (17.x) introducerar TDS 8.0-stöd för bcp-verktyget .

Syntax

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]]

Överväganden och begränsningar

  • Bcp-verktyget har en begränsning att felmeddelandet endast visar 512 byte tecken. Endast de första 512 byteen av felmeddelandet visas.

Överväganden för bcp i Linux och macOS

  • Fältavslutaren är en flik (\t).

  • Radslutstecken är en ny rad (\n).

  • Teckenläge är det föredragna formatet för bcp-formatfiler och datafiler som inte innehåller utökade tecken.

  • Ett omvänt snedstreck (\) på ett kommandoradsargument måste antingen citeras eller tas bort. Om du till exempel vill ange en ny rad som en anpassad radavgränsare måste du använda någon av följande mekanismer:

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

Alternativ för kommandoraden

I följande tabell visas de kommandoradsalternativ som är tillgängliga i bcp och vilka operativsystem de stöder.

Alternativ för kommandorad Stöds i Windows Stöds i Linux och macOS
[database_name.]schema. {table_name | | view_name"query"} Ja Ja
{idata_file | utdata_file | queryoutdata_file | format nul} Ja Ja
-en packet_size Ja Ja
-b partistorlek Ja Ja
-c Ja Ja
-C { ACP | OEM | RAW | code_page } Ja Nej
-d database_name Ja Ja
-D Ja Ja
-e err_file Ja Ja
-E Ja Ja
-f format_file Ja Ja
-F första_rad Ja Ja
-G Microsoft Entra-autentisering Ja Ja
-h"hint [,... n]" Ja Nej
-i input_file Ja Nej
-k Ja Ja
-K application_intent Ja Ja
-l login_timeout Ja Ja
-L sista_rad Ja Ja
-m max_errors Ja Ja
-n Ja Ja
-N Ja Nej
-o output_file Ja Nej
- P-lösenord Ja Ja
-q Ja Ja
-r row_term Ja Ja
-R Ja Ja
-S [server_name[\instance_name]] Ja Ja
-t field_term Ja Ja
-T Ja Ja
-U login_id Ja Ja
-u Ja 1 Ja
-v Ja Ja
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Ja Nej
-w Ja Ja
-x Ja Nej
-Y[s|m|o] Ja 1 Ja

Ja1 SQL Server 2025 (17.x) Förhandsversion och senare versioner.

database_name

Namnet på databasen där den angivna tabellen eller vyn finns. Om det inte anges är detta användarens standarddatabas.

Du kan också uttryckligen ange databasnamnet med -d.

Schemat

Namnet på ägaren till tabellen eller vyn. schema är valfritt om användaren som utför åtgärden äger den angivna tabellen eller vyn. Om schemat inte har angetts och användaren som utför åtgärden inte äger den angivna tabellen eller vyn returnerar SQL Server ett felmeddelande och åtgärden avbryts.

table_name

Namnet på måltabellen när du importerar data till SQL Server (in) och källtabellen när du exporterar data från SQL Server (out).

view_name

Namnet på målvyn när du kopierar data till SQL Server (in) och källvyn när du kopierar data från SQL Server (out). Endast vyer där alla kolumner refererar till samma tabell kan användas som målvyer. Mer information om begränsningarna för att kopiera data till vyer finns i INSERT.

"fråga"

En Transact-SQL fråga som returnerar en resultatuppsättning. Om frågan returnerar flera resultatuppsättningar kopieras endast den första resultatuppsättningen till datafilen. efterföljande resultatuppsättningar ignoreras. Använd dubbla citattecken runt frågan och enkla citattecken runt allt som är inbäddat i frågan. queryout måste också anges vid masskopiering av data från en fråga.

Frågan kan referera till en lagrad procedur så länge alla tabeller som refereras i den lagrade proceduren finns innan bcp-instruktionen körs. Om den lagrade proceduren till exempel genererar en temporär tabell misslyckas bcp-instruktionen eftersom temp-tabellen endast är tillgänglig vid körningstid och inte vid exekveringstillfället för instruktionen. I det här fallet bör du överväga att infoga resultatet av den lagrade proceduren i en tabell och sedan använda bcp för att kopiera data från tabellen till en datafil.

i

Kopierar från en fil till databastabellen eller vyn. Anger riktningen för masskopiering.

ut

Kopierar från databastabellen eller vyn till en fil. Anger riktningen för masskopiering.

Om du anger en befintlig fil skrivs filen över. När bcp-verktyget extraherar data representerar det en tom sträng som null och en null-sträng som en tom sträng.

data_file

Den fullständiga sökvägen till datafilen. När data massimporteras till SQL Server innehåller datafilen de data som ska kopieras till den angivna tabellen eller vyn. När data massexporteras från SQL Server innehåller datafilen de data som kopieras från tabellen eller vyn. Sökvägen kan innehålla mellan 1 och 255 tecken. Datafilen kan innehålla högst 2^63–1 rader.

queryout

Kopierar från en fråga och måste anges endast vid masskopiering av data från en fråga.

format

Skapar en formatfil baserat på det angivna alternativet (-n, -c, -w eller -N) och tabell- eller vyavgränsare. När du masskopierar data kan bcp-kommandot referera till en formatfil som sparar dig från att ange formatinformation interaktivt. Alternativet format kräver alternativet -f . Om du skapar en XML-formatfil krävs också alternativet -x . Mer information finns i Skapa en formatfil med bcp (SQL Server). Du måste ange nul som värde (format nul).

-paketstorlek

Anger antalet byte per nätverkspaket som skickas till och från servern. Du kan ange ett serverkonfigurationsalternativ med SQL Server Management Studio (eller den sp_configure system lagrade proceduren). Serverkonfigurationsalternativet kan dock åsidosättas individuellt med hjälp av det här alternativet. packet_size kan vara från 4 096 byte till 65 535 byte. standardvärdet är 4096.

Ökad paketstorlek kan förbättra prestanda för masskopieringsåtgärder. Om ett större paket begärs men inte kan beviljas används standardvärdet. Prestandastatistiken som genereras av bcp-verktyget visar paketstorleken som används.

-b batch_size

Anger antalet rader per batch med importerade data. Varje batch importeras och loggas som en separat transaktion som importerar hela batchen innan den checkas in. Som standard importeras alla rader i datafilen som en batch. Om du vill distribuera raderna mellan flera batchar anger du en batch_size som är mindre än antalet rader i datafilen. Om transaktionen för en batch misslyckas återställs bara infogningar från den aktuella batchen. Batchar som har slutförts av tidigare utförda transaktioner berörs inte av ett senare fel.

Använd inte det här alternativet med alternativet -h "ROWS_PER_BATCH=<bb>" .

-c

Utför åtgärden med hjälp av en teckendatatyp. Det här alternativet frågar inte efter varje fält. den använder tecken som lagringstyp, utan prefix och med \t (tabbtecken) som fältavgränsare och \r\n (nytt radtecken) som radavgränsare. -c är inte kompatibelt med -w.

Mer information finns i Använda teckenformat för att importera eller exportera data (SQL Server).

-C { ACP | OEM | RAW | code_page }

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Anger kodsidan för data i datafilen. code_page är endast relevant om data innehåller tecken-, varchar- eller textkolumner med teckenvärden som är större än 127 eller mindre än 32.

Du bör ange ett sorteringsnamn för varje kolumn i en formatfil, förutom när du vill att alternativet 65001 ska ha prioritet framför specifikationen för sorterings-/kodsidan.

Kodsida värde Beskrivning
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Standardkodsida som används av klienten. Det här är standardkodsidan som används om -C inte har angetts.
RAW Ingen konvertering från en kodsida till en annan sker. Det här är det snabbaste alternativet eftersom ingen konvertering sker.
<code_page> Specifikt kodsidanummer; till exempel 850.

Versioner före version 13 (SQL Server 2016 (13.x)) stöder inte kodsidan 65001 (UTF-8-kodning). Versioner som börjar med 13 kan importera UTF-8-kodning till tidigare versioner av SQL Server.

-d database_name

Anger vilken databas som ska anslutas till. Som standard ansluter bcp till användarens standarddatabas. Om -d <database_name> och ett namn på tre delar (database_name.schema.table, som skickas som den första parametern till bcp) anges, uppstår ett fel eftersom du inte kan ange databasnamnet två gånger. Om database_name börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte lägga till ett blanksteg mellan -d och databasnamnet.

-D

Gör att värdet som skickas till bcp -S alternativet tolkas som ett datakällnamn (DSN).

Ett DSN kan användas för att:

  • bädda in drivrutinsalternativ för att förenkla kommandorader,
  • framtvinga drivrutinsalternativ som annars inte är tillgängliga från kommandoraden, till exempel MultiSubnetFailover,
  • eller för att skydda känsliga autentiseringsuppgifter från att identifieras som kommandoradsargument.

Mer information finns i DSN-stöd i sqlcmd och bcp.

-e err_file

Anger den fullständiga sökvägen för en felfil som används för att lagra alla rader som bcp-verktyget inte kan överföra från filen till databasen. Felmeddelanden från bcp-kommandot går till användarens arbetsstation. Om det här alternativet inte används skapas ingen felfil.

Om err_file börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -e och err_file värde.

-E

Anger att identitetsvärdet eller värdena i den importerade datafilen ska användas för identitetskolumnen. Om -E inte anges ignoreras identitetsvärdena för den här kolumnen i datafilen som importeras, och SQL Server tilldelar automatiskt unika värden baserat på de start- och inkrementsvärden som angavs när tabellen skapades. Mer information finns i DBCC CHECKIDENT.

Om datafilen inte innehåller värden för identitetskolumnen i tabellen eller vyn använder du en formatfil för att ange att identitetskolumnen i tabellen eller vyn ska hoppas över när data importeras. SQL Server tilldelar automatiskt unika värden för kolumnen.

Alternativet -E har ett särskilt behörighetskrav. Mer information finns i "Kommentarer" senare i den här artikeln.

-f format_file

Anger den fullständiga sökvägen för en formatfil. Innebörden av det här alternativet beror på vilken miljö det används i, enligt följande:

  • Om -f används med format alternativet skapas den angivna format_file för den angivna tabellen eller vyn. Om du vill skapa en XML-formatfil anger du även alternativet -x . Mer information finns i Skapa en formatfil med bcp (SQL Server).

  • Om det in används med alternativet out eller -f krävs en befintlig formatfil.

    Anmärkning

    Det är valfritt att använda en formatfil med in-alternativet eller out-alternativet. I avsaknad av -f alternativet, om -n, -c, -w, eller -N inte har angetts, frågar kommandot efter formatinformation och låter dig spara dina svar i en formatfil (vars standardfilnamn är bcp.fmt).

Om format_file börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -f och format_file värde.

-F första_rad

Anger numret på den första raden som ska exporteras från en tabell eller importera från en datafil. Den här parametern kräver ett värde som är större än (>) 0 men mindre än (<) eller lika med (=) det totala antalet rader. I avsaknad av den här parametern är standardvärdet den första raden i filen.

first_row kan vara ett positivt heltal med ett värde på upp till 2^63-1. -F first_row är 1-baserad.

-G

Gäller för: Azure SQL Database, SQL Database i Microsoft Fabric och Endast Azure Synapse Analytics.

Den här växeln används av klienten för att ange att användaren autentiseras med Microsoft Entra-ID. Växeln -G kräver version 14.0.3008.27 eller senare versioner. För att fastställa din version kör du bcp -v. Mer information finns i Använda Microsoft Entra-autentisering med SQL Database eller Azure Synapse Analytics eller autentisering i SQL-databas i Microsoft Fabric.

Viktigt!

I Linux och macOS stöds inte interaktiv Microsoft Entra-autentisering för närvarande. Microsoft Entra-integrerad autentisering kräver Microsoft ODBC Driver 17 för SQL Server version 17.6.1 och senare versioner och en korrekt konfigurerad Kerberos-miljö.

Om du vill kontrollera om din version av bcp innehåller stöd för Microsoft Entra-autentisering skriver bcp --help du och kontrollerar att du ser -G i listan med tillgängliga argument.

  • Användarnamn och lösenord för Microsoft Entra

    När du vill använda ett Användarnamn och lösenord för Microsoft Entra kan du ange -G alternativet och även använda användarnamnet och lösenordet genom att ange -U alternativen och -P .

    I följande exempel exporteras data med autentiseringsuppgifter för Microsoft Entra-användarnamn och lösenord. Exemplet exporterar tabellen bcptest från en databas testdb från Azure-servern aadserver.database.windows.net och lagrar data i filen 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
    

    I följande exempel importeras data med autentiseringsuppgifterna för en Microsoft Entra-användare. Exemplet importerar data från filen c:\last\data1.dat till en tabell bcptest för databasen testdb på Azure-servern aadserver.database.windows.net med ett Användarnamn och lösenord för 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 integrerat

    För Microsoft Entra-integrerad autentisering anger du -G alternativet utan användarnamn eller lösenord. Den här konfigurationen kräver att det aktuella Windows-användarkontot (kontot som bcp-kommandot körs under) är federerat med Microsoft Entra-ID:

    I följande exempel exporteras data med microsoft Entra-integrerad autentisering. Exemplet exporterar tabellen bcptest från databasen testdb på den logiska servern aadserver.database.windows.net och lagrar data i filen c:\last\data2.datmed hjälp av Windows-autentiseringsuppgifter federerade med Microsoft Entra-ID:

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

    I följande exempel importeras data med microsoft Entra-integrerad autentisering. Exemplet importerar data från filtabellen c:\last\data2.dat till tabellen bcptest i databasen testdb på den logiska servern aadserver.database.windows.netmed hjälp av Windows-autentiseringsuppgifter federerade med Microsoft Entra-ID:

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

    Viktigt!

    bcp är nära kopplad till föraren. Huvudversionerna av både bcp och drivrutinen som ett DSN skapas med måste vara desamma. För att fastställa din version kör du bcp -v.

    För att exportera data via bcp med hjälp av en hanterad tjänstidentitet i Windows krävs att ett DSN konfigureras.

    Så här konfigurerar du ett DSN på en dator som kör Windows:

    1. Tryck på Windows-tangenten på tangentbordet

    2. Skriv ODBC och välj lämplig version av ODBC-datakälladministratören

    3. Välj antingen fliken Användar-DSN eller System-DSN

    4. Välj Lägg till och följ anvisningarna

    5. När du tillfrågas om en autentiseringstyp väljer du Azure Hanterad tjänstidentitetsautentisering

    6. Om du har en användartilldelad hanterad identitet klistrar du in identiteten Object (principal) ID i rutan Inloggnings-ID längst ned på fliken autentisering

    7. Om du vill konfigurera ditt DSN fortsätter du att följa anvisningarna.

    En fullständig genomgång, inklusive skärmbilder, finns i Skapa och redigera DSN i användargränssnittet.

    När DSN har konfigurerats kan bcp anropas med hjälp av -D flaggan för att ange att värdet som skickas för -S är ett DSN.

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

  • Åtkomsttoken för Microsoft Entra-ID

    Gäller för: Endast Linux och macOS. Windows stöds inte.

    Användare av bcp 17.8 och senare versioner, i Linux och macOS, kan också autentisera med en token. I följande exempel används PowerShell på Linux för att hämta en åtkomsttoken.

    Det här exemplet hämtar en åtkomsttoken och placerar den i en fil för att exportera data med hjälp av en systemtilldelad hanterad identitet.

    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
    

    Det här exemplet skickar en Client ID till -AccountId-parametern i Connect-AzAccount för att hämta en åtkomsttoken och placera den i en tokenfil. Token används sedan för att exportera data med den angivna användartilldelade hanterade identiteten.

    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
    
  • Microsoft Entra Interaktiv

    Gäller för: Endast Windows. Linux och macOS stöds inte.

    Med interaktiv Microsoft Entra-autentisering, som är tillgänglig för alla Azure SQL- och SQL Server 2022-versioner (16.x) och senare versioner, kan du använda en interaktiv dialogruta för att autentisera, vilket också stöder multifaktorautentisering.

    Interaktiv Microsoft Entra-autentisering kräver bcpversion 15.0.1000.34 eller senare och ODBC version 17.2 eller senare.

    Om du vill aktivera interaktiv autentisering anger du -G alternativet endast med användarnamn (-U) och inget lösenord.

    I följande exempel exporteras data med hjälp av interaktiv Microsoft Entra-autentisering, vilket innefattar att ange användarnamnet för ett Microsoft Entra-konto.

    Interaktivt läge kräver att ett lösenord anges manuellt, eller för konton med multifaktorautentisering aktiverat slutför du den konfigurerade MFA-autentiseringsmetoden.

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

    Om du använder en Microsoft Entra-användare som är ett Windows-konto från en federerad domän måste användarnamnet som anges på kommandoraden innehålla dess domän (till exempel joe@contoso.com):

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

    Om gästanvändare finns i en specifik Microsoft Entra-klientorganisation och ingår i en grupp som finns i Azure SQL Database som har databasbehörighet för att köra bcp-kommandot används deras gästanvändaralias (till exempel keith0@adventure-works.com).

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

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Anger tips eller tips som ska användas vid massimport av data till en tabell eller vy.

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

    Sorteringsordningen för data i datafilen. Prestanda för massimport förbättras om data som importeras sorteras enligt det klustrade indexet på tabellen, om sådant finns. Om datafilen sorteras i en annan ordning, d.v.s. förutom ordningen på en klustrad indexnyckel, eller om det inte finns något klustrat index i tabellen, ORDER ignoreras satsen. De kolumnnamn som anges måste vara giltiga kolumnnamn i måltabellen. Som standard förutsätter bcp att datafilen är osorterad. För optimerad massimport verifierar SQL Server också att importerade data är sorterade.

  • ROWS_PER_BATCH = bb

    Antal rader med data per batch (som bb). Används när -b inte anges, vilket resulterar i att hela datafilen skickas till servern som en enda transaktion. Servern optimerar bulklasten enligt värdet bb. Som standard är ROWS_PER_BATCH okänt.

  • KILOBYTES_PER_BATCH = cc

    Ungefärligt antal kilobyte av data per batch (som cc). Som standard är KILOBYTES_PER_BATCH okänt.

  • TABLOCK

    Anger att ett massinläsningslås på tabellnivå hämtas under massinläsningsoperationen; annars hämtas ett lås på radnivå. Det här tipset förbättrar prestanda avsevärt eftersom att hålla ett lås under masskopiering minskar låskonflikter på tabellen. En tabell kan läsas in samtidigt från flera klienter om tabellen inte har några index och TABLOCK har angetts. Som standard bestäms låsningsbeteendet av tabellalternativet table lock on bulkload. Mer information finns i sp_tableoption.

    Anmärkning

    Om måltabellen är ett klustrat kolumnlagerindex behövs ingen hint för inläsning av flera parallella klienter eftersom varje parallell tråd tilldelas en separat radgrupp inom indexet och laddar data i den. Mer information finns i Columnstore-index: översikt.

  • kontrollbegränsningar

    Anger att alla begränsningar i måltabellen eller vyn måste kontrolleras under massimportoperationen. Utan indikationen CHECK_CONSTRAINTS ignoreras alla CHECK- och FOREIGN KEY-begränsningar, och efter åtgärden markeras begränsningen på tabellen som icke betrodd.

    Anmärkning

    UNIQUE, PRIMARY KEYoch NOT NULL begränsningar tillämpas alltid.

    Vid något tillfälle måste du kontrollera begränsningarna för hela tabellen. Om tabellen var ickeblank före bulkimporten kan kostnaden för att återvalidera villkoret överskrida kostnaden för att tillämpa CHECK restriktioner på tilläggsdata. Därför rekommenderar vi att du normalt aktiverar begränsningskontroll under en inkrementell massimport.

    En situation där du kanske vill inaktivera begränsningar (standardbeteendet) är om indata innehåller rader som bryter mot begränsningar. Med CHECK begränsningar inaktiverade kan du importera data och sedan använda Transact-SQL-instruktioner för att ta bort data som inte är giltiga.

    bcp framtvingar nu dataverifiering och datakontroller som kan leda till att skript misslyckas om de körs på ogiltiga data i en datafil.

    Anmärkning

    Omkopplaren -mmax_errors gäller inte för begränsningskontroll.

  • FIRE_TRIGGERS

    När du anger det här alternativet med argumentet in körs alla insert-utlösare som definierats i måltabellen under masskopieringsåtgärden. Om FIRE_TRIGGERS inte har angetts körs inga infogningsutlösare. FIRE_TRIGGERS ignoreras för argumenten out, queryoutoch format .

-i input_file

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Anger namnet på en svarsfil som innehåller svaren på frågorna i kommandotolken för varje datafält när en masskopia utförs med interaktivt läge (-n, -c, -weller -N inte anges).

Om input_file börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -i och input_file värde.

-k

Anger att tomma kolumner ska behålla ett null-värde under åtgärden i stället för att ha några standardvärden för kolumnerna infogade. Mer information finns i Behåll nullvärden eller standardvärden under massimport (SQL Server).

-K ansökningsavsikt

Deklarerar programarbetsbelastningstypen när du ansluter till en server. Det enda möjliga värdet är ReadOnly. Om -K inte anges stöder bcp-verktyget inte anslutning till en sekundär replik i en AlwaysOn-tillgänglighetsgrupp. Mer information finns i Avlasta enbart läsbar arbetsbelastning till en sekundär replik i en Always On-tillgänglighetsgrupp.

-l login_timeout

Anger en tidsgräns för inloggning. Alternativet -l anger antalet sekunder innan en inloggning till SQL Server överskrider tidsgränsen när du försöker ansluta till en server. Standardtidsgränsen för inloggning är 15 sekunder. Tidsgränsen för inloggning måste vara ett tal mellan 0 och 65534. Om det angivna värdet inte är numeriskt eller inte hamnar i det intervallet genererar bcp ett felmeddelande. Värdet 0 anger en oändlig tidsgräns.

-L sista_rad

Anger numret på den sista raden som ska exporteras från en tabell eller importera från en datafil. Den här parametern kräver ett värde som är större än (>) 0 men mindre än (<) eller lika med (=) antalet för den sista raden. I avsaknad av den här parametern är standardvärdet den sista raden i filen.

last_row kan vara ett positivt heltal med ett värde upp till 2^63-1.

-m max_fel

Anger det maximala antalet syntaxfel som kan inträffa innan bcp-åtgärden avbryts. Ett syntaxfel innebär ett datakonverteringsfel till måldatatypen. Den max_errors summan exkluderar eventuella fel som bara kan identifieras på servern, till exempel begränsningsöverträdelser.

En rad som inte kan kopieras av bcp-verktyget ignoreras och räknas som ett fel. Om det här alternativet inte ingår är standardvärdet 10.

Anmärkning

Alternativet -m gäller inte heller för konvertering av pengar eller bigint .

-n

Utför masskopiering med hjälp av de inbyggda datatyperna i databasen. Det här alternativet frågar inte efter varje fält. den använder de inbyggda värdena.

Mer information finns i Använda internt format för att importera eller exportera data (SQL Server).

-N

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Utför masskopieringsåtgärden med hjälp av inbyggda datatyper (databas) för data för icke-teckendata och Unicode-tecken för teckendata. Det här alternativet erbjuder ett alternativ med högre prestanda än -w alternativet och är avsett för överföring av data från en instans av SQL Server till en annan med hjälp av en datafil. Den frågar inte efter varje fält. Använd det här alternativet när du överför data som innehåller ANSI-utökade tecken och du vill dra nytta av prestanda för inbyggt läge.

Mer information finns i Använda unicode-inbyggt format för att importera eller exportera data (SQL Server).

Om du exporterar och sedan importerar data till samma tabellschema med hjälp av bcp med -Nkan du se en trunkeringsvarning om det finns en fast längd, teckenkolumn som inte är unicode (till exempel tecken(10)).

Varningen kan ignoreras. Ett sätt att lösa den här varningen är att använda -n i stället för -N.

-o utdatafil

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Anger namnet på en fil som tar emot utdata som omdirigeras från kommandotolken.

Om output_file börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -o och output_file värde.

-P lösenord

Anger lösenordet för inloggnings-ID:t. Om det här alternativet inte används frågar bcp-kommandot efter ett lösenord. Om det här alternativet används i slutet av kommandotolken utan lösenord använder bcp standardlösenordet (NULL).

Viktigt!

Använd inte ett tomt lösenord. Använd ett starkt lösenord.

Om du vill maskera lösenordet anger du inte alternativet -P tillsammans med alternativet -U . I stället, när du har angett bcp tillsammans med -U-alternativet och andra växlar (men inte -P), trycker du på Retur, och kommandot uppmanar dig att ange ett lösenord. Den här metoden säkerställer att lösenordet maskeras när det anges.

Om lösenordet börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte lägga till ett blanksteg mellan -Poch lösenordets värde.

-q

Kör -instruktionen SET QUOTED_IDENTIFIER ON i anslutningen mellan bcp-verktyget och en instans av SQL Server. Använd det här alternativet om du vill ange en databas, ägare, tabell eller vynamn som innehåller ett blanksteg eller ett enkelt citattecken. Omslut hela tabellen i tre delar eller visa namnet inom citattecken ("").

Om du vill ange ett databasnamn som innehåller ett blanksteg eller ett enkelt citattecken måste du använda alternativet -q .

-q gäller inte för värden som skickas till -d.

Mer information finns i avsnittet Anmärkningar i den här artikeln.

-r row_term

Anger radavgränsare. Standardvärdet är \n (nytt radtecken). Använd den här parametern för att åsidosätta standardradavgränsaren. Mer information finns i Ange fält- och radavgränsare (SQL Server).

Om du anger radavslutaren i hexadecimal notation i ett bcp-kommando trunkeras värdet till 0x00. Om du till exempel anger 0x410041, så används 0x41.

Om row_term börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -r och row_term värde.

-R

Anger att valuta-, datum- och tidsdata masskopieras till SQL Server med det regionala format som definierats för språkinställningen för klientdatorn. Som standard ignoreras regionala inställningar.

-S [server_name[\instance_name]]

Anger namnet på SQL Server-instansen som ska anslutas till, eller om -D den används, ett DSN.

Om ingen server anges ansluter bcp-verktyget till standardinstansen av SQL Server på den lokala datorn. Det här alternativet krävs när ett bcp-kommando körs från en fjärrdator i nätverket eller en lokal namngiven instans. Om du vill ansluta till standardinstansen av SQL Server på en server anger du endast server_name. Om du vill ansluta till en namngiven instans av SQL Server anger du server_name**\**instance_name.

-t field_term

Anger fältavgränsaren. Standardvärdet är \t (tabbtecken). Använd den här parametern för att åsidosätta standardfältavgränsaren. Mer information finns i Ange fält- och radavgränsare (SQL Server).

Om du anger fältavslutaren i hexadecimal notation i ett bcp-kommando trunkeras värdet till 0x00. Om du till exempel anger 0x410041, så används 0x41.

Om field_term börjar med ett bindestreck (-) eller ett snedstreck (/) ska du inte ta med ett blanksteg mellan -t och field_term värde.

-T

Anger att verktyget bcp ansluter till SQL Server med en betrodd anslutning med integrerad säkerhet. Nätverksanvändarens säkerhetsautentiseringsuppgifter , login_id och lösenord krävs inte. Om -T inte har angetts måste du ange -U och -P för att ansluta.

Viktigt!

När bcp-verktyget ansluter till SQL Server med en betrodd anslutning med integrerad säkerhet använder du -T alternativet (betrodd anslutning) i stället för kombinationen av användarnamn och lösenord . När bcp-verktyget ansluter till SQL Database eller Azure Synapse Analytics stöds inte Windows-autentisering eller Microsoft Entra-autentisering. Använd alternativen -U och -P.

-U login_id

Anger det inloggnings-ID som används för att ansluta till SQL Server.

-u

Gäller för:bcp version 18 och senare versioner.

Lita på servercertifikatet. När det används med alternativet Kryptera för anslutningen aktiverar kryptering med hjälp av ett självsignerat servercertifikat.

-v

Rapporterar bcp-verktygets versionsnummer och upphovsrätt.

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

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Utför masskopieringsåtgärden med hjälp av datatyper från en tidigare version av SQL Server. Det här alternativet frågar inte efter varje fält. den använder standardvärdena.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) och 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 = Förhandsversion av SQL Server 2025 (17.x)

Om du till exempel vill generera data för typer som inte stöds av SQL Server 2000 (8.x), men som introducerades i senare versioner av SQL Server, använder du -V80 alternativet .

Mer information finns i Importera inbyggda data och teckenformatdata från tidigare versioner av SQL Server.

-w

Utför masskopieringsåtgärden med unicode-tecken. Det här alternativet frågar inte efter varje fält. den använder nchar som lagringstyp, inga prefix, \t (tabbtecken) som fältavgränsare och \n (nytt radtecken) som radavgränsare. -w är inte kompatibelt med -c.

Mer information finns i Använda Unicode-teckenformat för att importera eller exportera data (SQL Server).

-x

Gäller för: Endast Windows. Stöds inte i Linux och macOS.

Det här alternativet används med format alternativen och -fformat_file och genererar en XML-baserad formatfil i stället för standardfilen för icke-XML-format. Fungerar -x inte när du importerar eller exporterar data. Det genererar ett fel om det används utan både format och -fformat_file.

-Y[s|m|o]

Gäller för:bcp version 18 och senare versioner.

Anger om anslutningar använder TLS-kryptering över nätverket. -Y kan vara o (för optional), m (för mandatory, standard) eller s (för strict). Om du inte inkluderar -Y-Ym är (för mandatory) standardvärdet.

Anmärkningar

  • Bcp 13.0-klienten installeras när du installerar Microsoft SQL Server 2019-verktyg (15.x). Om verktyg installeras för flera versioner av SQL Server, beroende på ordningen på värden PATH för miljövariabeln, kanske du använder den tidigare bcp-klienten i stället för bcp 13.0-klienten. Den här miljövariabeln definierar den uppsättning kataloger som används av Windows för att söka efter körbara filer. Om du vill ta reda på vilken version du använder kör bcp -v du kommandot i Kommandotolken i Windows. Information om hur du anger kommandosökvägen i miljövariabeln finns i PATHMiljövariabler eller sök efter miljövariabler i Windows-hjälpen.

    För att se till att den senaste versionen av bcp-verktyget körs måste du ta bort alla äldre versioner av bcp-verktyget .

    Om du vill ta reda på var alla versioner av bcp-verktyget är installerade skriver du i kommandotolken:

    where bcp.exe
    
  • Bcp-verktyget kan också laddas ned separat från Microsoft SQL Server 2016 Feature Pack. Välj antingen ENU\x64\MsSqlCmdLnUtils.msi eller ENU\x86\MsSqlCmdLnUtils.msi.

  • XML-formatfiler stöds endast när SQL Server-verktyg installeras tillsammans med SQL Server Native Client.

  • Information om var du hittar eller hur du kör bcp-verktyget och om syntaxkonventionerna för kommandoradsverktyg finns i SQL-kommandoradsverktyg (Databasmotor).

  • Information om hur du förbereder data för massimport- eller exportåtgärder finns i Förbereda data för massexport eller massimport.

  • Information om när radinfogningsåtgärder som utförs genom massimport loggas i transaktionslogg finns under Krav för minimal loggning vid massimport.

  • Använda ytterligare specialtecken

    Tecknen <, >, |, & och ^ är specialtecken för kommandogränssnittet, och de måste föregås av escape-tecknet (^) eller omges av citattecken när de används i en sträng (till exempel "StringContaining&Symbol"). Om du använder citattecken för att omsluta en sträng som innehåller ett av specialteckenen anges citattecknen som en del av miljövariabelvärdet.

Stöd för intern datafil

I SQL Server stöder bcp-verktyget inbyggda datafiler som är kompatibla med SQL Server-versioner från och med SQL Server 2000 (8.x) och senare.

Beräknade kolumner och tidsstämpelkolumner

Värden i datafilen som importeras för beräknade kolumner eller tidsstämpelkolumner ignoreras och SQL Server tilldelar automatiskt värden. Om datafilen inte innehåller värden för de beräknade kolumnerna eller tidsstämpelkolumnerna i tabellen använder du en formatfil för att ange att de beräknade kolumnerna eller tidsstämpelkolumnerna i tabellen ska hoppas över när data importeras. SQL Server tilldelar automatiskt värden för kolumnen.

Beräknade kolumner och tidsstämpelkolumner masskopieras från SQL Server till en datafil som vanligt.

Ange identifierare som innehåller blanksteg eller citattecken

SQL Server-identifierare kan innehålla tecken som inbäddade blanksteg och citattecken. Sådana identifierare måste behandlas på följande sätt:

  • När du anger en identifierare eller ett filnamn som innehåller ett blanksteg eller citattecken i kommandotolken omger du identifieraren inom citattecken ("").

    Följande bcp out kommando skapar till exempel en datafil med namnet Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Om du vill ange ett databasnamn som innehåller ett blanksteg eller citattecken måste du använda alternativet -q .

  • För namn på ägare, tabeller eller vyer som innehåller inbäddade blanksteg eller citattecken kan du antingen:

    • Ange alternativet -q eller

    • Omslut ägaren, tabellen eller vynamn inom hakparenteser ([]) i citattecken.

Datavalidering

bcp framtvingar nu dataverifiering och datakontroller som kan leda till att skript misslyckas om de körs på ogiltiga data i en datafil. Bcp verifierar till exempel nu att:

  • De inbyggda representationerna av flyttal eller verkliga datatyper är giltiga.

  • Unicode-data har en jämn bytelängd.

Former av ogiltiga data som kan massimporteras i tidigare versioner av SQL Server kan inte läsas in nu. I tidigare versioner inträffade inte felet förrän en klient försökte komma åt ogiltiga data. Den tillagda valideringen minimerar överraskningar när du kör frågor mot data efter massladdning.

Massexportera eller importera SQLXML-dokument

Om du vill massexportera eller importera SQLXML-data använder du någon av följande datatyper i formatfilen.

Datatyp Effekt
SQLCHAR eller SQLVARYCHAR Data skickas på klientkodsidan eller på kodsidan som är underförstådd av sorteringen). Effekten är densamma som att ange växeln -c utan att ange en formatfil.
SQLNCHAR eller SQLNVARCHAR Data skickas som Unicode. Effekten är densamma som att ange växeln -w utan att ange en formatfil.
SQLBINARY eller SQLVARYBIN Data skickas utan konvertering.

Behörigheter

En bcp out åtgärd kräver SELECT behörighet i källtabellen.

En bcp in åtgärd kräver minimalt SELECT/INSERT behörigheter på måltabellen. Dessutom ALTER TABLE krävs behörighet om något av följande villkor är sant:

  • Begränsningar finns och tipset CHECK_CONSTRAINTS har inte angetts.

    Att inaktivera begränsningar är standardbeteendet. Om du vill aktivera begränsningar explicit använder du -h alternativet med tipset CHECK_CONSTRAINTS .

  • Utlösare finns och tipset FIRE_TRIGGER har inte angetts.

    Utlösare utlöses inte som standard. Om du vill utlösa utlösare explicit använder du -h alternativet med tipset FIRE_TRIGGERS .

  • Du använder alternativet -E för att importera identitetsvärden från en datafil.

Anmärkning

Krav ALTER TABLE på behörighet i måltabellen introducerades i SQL Server 2005 (9.x). Det här kravet kan leda till att bcp-skript som inte framtvingar utlösare och villkorskontroller misslyckas om användarkontot ALTER TABLE saknar behörighet för måltabellen.

Metodtips för teckenläge (-c) och inbyggt läge (-n)

Det här avsnittet innehåller rekommendationer för teckenläge (-c) och inbyggt läge (-n).

  • (Administratör/användare) Använd ursprungligt format (-n) när det är möjligt för att undvika avgränsningsproblemet. Använd det interna formatet för att exportera och importera med SQL Server. Exportera data från SQL Server med hjälp av -c alternativet eller -w om data ska importeras till en icke-SQL Server-databas.

  • (Administratör) Verifiera data när du använder bcp out. När du till exempel använder bcp out, bcp in, och sedan bcp out, kontrollera att data exporteras korrekt och att avslutsvärdena inte används som en del av något datavärde. Överväg att åsidosätta standardavslutare genom att använda -t och -r-alternativen med slumpmässiga hexadecimala värden, för att undvika konflikter mellan avslutningsvärden och datavärden.

  • (Användare) Använd en lång och unik avslutare (valfri sekvens med byte eller tecken) för att minimera risken för en konflikt med det faktiska strängvärdet. Detta kan göras med hjälp av alternativen -t och -r.

Exempel

Exemplen i det här avsnittet använder exempeldatabasen WideWorldImporters för SQL Server 2016 (13.x) och senare versioner, Azure SQL Database och Azure SQL Managed Instance. WideWorldImporters kan laddas ned från https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Se RESTORE-instruktioner för syntaxen för att återställa exempeldatabasen.

Exempel på testvillkor

Om inget annat anges förutsätter exemplen att du använder Windows-autentisering och har en betrodd anslutning till serverinstansen där du kör bcp-kommandot . En katalog med namnet D:\bcp används i många av exemplen.

Följande Transact-SQL skript skapar en tom kopia av WideWorldImporters.Warehouse.StockItemTransactions tabellen och lägger sedan till en primärnyckelbegränsning:

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

Du kan trunkera StockItemTransactions_bcp tabellen efter behov:

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

A. Identifiera bcp-verktygsversion

I en kommandotolk anger du följande kommando:

bcp -v

B. Kopiera tabellrader till en datafil (med en betrodd anslutning)

Följande exempel illustrerar alternativet out i WideWorldImporters.Warehouse.StockItemTransactions tabellen.

  • Grundläggande

    Det här exemplet skapar en datafil med namnet StockItemTransactions_character.bcp och kopierar tabelldata till den med hjälp av teckenformat .

    I en kommandotolk anger du följande kommando:

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Utökad

    Det här exemplet skapar en datafil med namnet StockItemTransactions_native.bcp och kopierar tabelldata till den med det interna formatet. Exemplet anger också det maximala antalet syntaxfel, en felfil och en utdatafil.

    I en kommandotolk anger du följande kommando:

    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
    

Granska Error_out.log och Output_out.log. Error_out.log bör vara tom. Jämför filstorlekarna mellan StockItemTransactions_character.bcp och StockItemTransactions_native.bcp.

C. Kopiera tabellrader till en datafil (med autentisering i blandat läge)

I följande exempel visas alternativet out i WideWorldImporters.Warehouse.StockItemTransactions tabellen. Det här exemplet skapar en datafil med namnet StockItemTransactions_character.bcp och kopierar tabelldata till den med hjälp av teckenformat .

Exemplet förutsätter att du använder autentisering i blandat läge och du måste använda växeln -U för att ange ditt inloggnings-ID. Om du inte ansluter till standardinstansen av SQL Server på den lokala datorn använder du dessutom växeln -S för att ange systemnamnet och eventuellt ett instansnamn.

I en kommandotolk anger du följande kommando: (Systemet uppmanar dig att ange ditt lösenord.)

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

D. Kopiera data från en fil till en tabell

Följande exempel illustrerar alternativet in i WideWorldImporters.Warehouse.StockItemTransactions_bcp tabellen med filer som skapats tidigare.

  • Grundläggande

    I det här exemplet används datafilen som StockItemTransactions_character.bcp skapades tidigare.

    I en kommandotolk anger du följande kommando:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Utökad

    I det här exemplet används datafilen som StockItemTransactions_native.bcp skapades tidigare. Exemplet: Använd tipset TABLOCK, anger batchstorleken, det maximala antalet syntaxfel, en felfil och en utdatafil.

    I en kommandotolk anger du följande kommando:

    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
    

    Granska Error_in.log och Output_in.log.

E. Kopiera en specifik kolumn till en datafil

Om du vill kopiera en specifik kolumn kan du använda alternativet queryout . I följande exempel kopieras endast StockItemTransactionID tabellens Warehouse.StockItemTransactions kolumn till en datafil.

I en kommandotolk anger du följande kommando:

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

F. Kopiera en specifik rad till en datafil

Om du vill kopiera en viss rad kan du använda alternativet queryout . I följande exempel kopieras endast raden för den person som heter Amy Trefl från WideWorldImporters.Application.People tabellen till en datafil Amy_Trefl_c.bcp.

Anmärkning

Växeln -d används för att identifiera databasen.

I en kommandotolk anger du följande kommando:

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

G. Kopiera data från en fråga till en datafil

Om du vill kopiera resultatuppsättningen från en Transact-SQL-instruktion till en datafil använder du alternativet queryout . I följande exempel kopieras namnen från WideWorldImporters.Application.People tabellen, ordnade efter fullständigt namn, till People.txt datafilen.

Anmärkning

Växeln -t används för att skapa en kommaavgränsad fil.

I en kommandotolk anger du följande kommando:

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

H. Skapa formatfiler

I följande exempel skapas tre olika formatfiler för Warehouse.StockItemTransactions tabellen i WideWorldImporters databasen. Granska innehållet i varje skapad fil.

I en kommandotolk anger du följande kommandon:

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

Anmärkning

Om du vill använda växeln -x måste du använda en bcp 9.0-klient. Information om hur du använder bcp 9.0-klienten finns i avsnittet Anmärkningar .

Mer information finns i Använda icke-XML-formatfiler (SQL Server) och XML-formatfiler (SQL Server).

Jag. Använda en formatfil för massimport med bcp

För att använda en tidigare skapad formatfil när du importerar data till en SQL Server-instans, använder du -f-växeln med in-alternativet. Följande kommando kopierar till exempel innehållet i en datafil, StockItemTransactions_character.bcp, till en kopia av Warehouse.StockItemTransactions_bcp tabellen med hjälp av den tidigare skapade formatfilen . StockItemTransactions_c.xml

Anmärkning

Omkopplaren -L används för att endast importera de första 100 posterna.

I en kommandotolk anger du följande kommando:

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

Anmärkning

Formatfiler är användbara när datafilfälten skiljer sig från tabellkolumnerna. till exempel i deras antal, ordning eller datatyper. Mer information finns i Formatera filer för att importera eller exportera data (SQL Server).

J. Ange en kodsida

Följande exempel på partiell kod visar bcp-import när du anger en kodsida 65001:

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

K. Exempel på utdatafil med ett anpassat fält och radavgränsare

Det här exemplet visar två exempelfiler som genereras av bcp med hjälp av anpassade fält och radavgränsare.

  1. Skapa en tabell dbo.T1 i tempdb databasen med två kolumner ID och 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. Generera en utdatafil från exempeltabellen dbo.T1med hjälp av en anpassad fältavgränsare.

    I det här exemplet är MYSERVERservernamnet och -t , anger den anpassade fältavgränsaren.

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

    Här är resultatet.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Generera en utdatafil från exempeltabellen dbo.T1med hjälp av en anpassad fältavgränsare och anpassad radavgränsare.

    I det här exemplet är MYSERVERservernamnet , -t , anger den anpassade fältavgränsaren och -r : anger den anpassade radavgränsaren.

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

    Här är resultatet.

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

    Anmärkning

    Radavgränsaren läggs alltid till, även till den sista posten. Fältavgränsaren läggs dock inte till i det sista fältet.

Ytterligare exempel

Följande artiklar innehåller exempel på hur du använder bcp:

Få hjälp

Bidra till SQL-dokumentation

Visste du att du kan redigera SQL-innehåll själv? Om du gör det hjälper du inte bara till att förbättra vår dokumentation, utan du får även kredit som deltagare på sidan.

Mer information finns i Redigera Microsoft Learn-dokumentation.