Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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.
Ladda ned ODBC-drivrutin för SQL Server
Ladda ned Microsofts kommandoradsverktyg 15 för SQL Server (x64)
Ladda ned Microsofts kommandoradsverktyg 15 för SQL Server (x86)
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 medformat
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 alternativetout
eller-f
krävs en befintlig formatfil.Anmärkning
Det är valfritt att använda en formatfil med
in
-alternativet ellerout
-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 ärbcp.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 databastestdb
från Azure-servernaadserver.database.windows.net
och lagrar data i filenc:\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 tabellbcptest
för databasentestdb
på Azure-servernaadserver.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 databasentestdb
på den logiska servernaadserver.database.windows.net
och lagrar data i filenc:\last\data2.dat
med 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 tabellenbcptest
i databasentestdb
på den logiska servernaadserver.database.windows.net
med 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:
Tryck på Windows-tangenten på tangentbordet
Skriv
ODBC
och välj lämplig version av ODBC-datakälladministratörenVälj antingen fliken Användar-DSN eller System-DSN
Välj Lägg till och följ anvisningarna
När du tillfrågas om en autentiseringstyp väljer du Azure Hanterad tjänstidentitetsautentisering
Om du har en användartilldelad hanterad identitet klistrar du in identiteten
Object (principal) ID
i rutan Inloggnings-ID längst ned på fliken autentiseringOm 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 iConnect-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 ärROWS_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 tabellalternativettable 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 allaCHECK
- ochFOREIGN KEY
-begränsningar, och efter åtgärden markeras begränsningen på tabellen som icke betrodd.Anmärkning
UNIQUE
,PRIMARY KEY
ochNOT 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
-m
max_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 argumentenout
,queryout
ochformat
.
-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
, -w
eller -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 -N
kan 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 -P
och 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 -f
format_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 -f
format_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örbcp -v
du kommandot i Kommandotolken i Windows. Information om hur du anger kommandosökvägen i miljövariabeln finns iPATH
Miljö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
ellerENU\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 namnetCurrency 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
ellerOmslut ä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 tipsetCHECK_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 tipsetFIRE_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änderbcp out
,bcp in
, och sedanbcp 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 tipsetTABLOCK
, 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
ochOutput_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.
Skapa en tabell
dbo.T1
itempdb
databasen med två kolumnerID
ochName
.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
Generera en utdatafil från exempeltabellen
dbo.T1
med hjälp av en anpassad fältavgränsare.I det här exemplet är
MYSERVER
servernamnet 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
Generera en utdatafil från exempeltabellen
dbo.T1
med hjälp av en anpassad fältavgränsare och anpassad radavgränsare.I det här exemplet är
MYSERVER
servernamnet ,-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:
Dataformat för massimport eller massexport (SQL Server)
- Använda internt format för att importera eller exportera data (SQL Server)
- Använd teckenformat för att importera eller exportera data (SQL Server)
- Använda unicode-inbyggt format för att importera eller exportera data (SQL Server)
- Använda Unicode-teckenformat för att importera eller exportera data (SQL Server)
Behåll null-värden eller standardvärden under massimport (SQL Server)
Formatera filer för att importera eller exportera data (SQL Server)
- Skapa en formatfil med bcp (SQL Server)
- Använd en formatfil för att massimportera data (SQL Server)
- Använd en formatfil för att hoppa över en tabellkolumn (SQL Server)
- Använd en formatfil för att hoppa över ett datafält (SQL Server)
- Använd en formatfil för att mappa tabellkolumner till datafilfält (SQL Server)
Exempel på massimport och export av XML-dokument (SQL Server)
Relaterat innehåll
- Förbereda data för massexport eller import
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Formatera filer för att importera eller exportera data (SQL Server)
Få hjälp
- Idéer för SQL: Har du förslag på hur du kan förbättra SQL Server?
- Microsoft Q &A (SQL Server)
- DBA Stack Exchange (tagg sql-server): Ställ frågor till SQL Server
- Stack Overflow (tagg sql-server): Svar på frågor om SQL-utveckling
- Licensvillkor och information för Microsoft SQL Server
- Supportalternativ för företagsanvändare
- Ytterligare hjälp och feedback för SQL Server
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.