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
Analysplattformssystem (PDW)
SQL-databas i Förhandsversion av 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.
Note
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 Preview och Azure Synapse Analytics.
Note
Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).
Systemkrav
- Windows 10 och senare versioner
- Windows Server 2016 och senare versioner
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.
| Kommandoradsalternativ | Stöds i Windows | Stöds i Linux och macOS |
|---|---|---|
| [database_name.]schema. {table_name | | view_name"query"} | Yes | Yes |
| {idata_file | utdata_file | queryoutdata_file | format nul} | Yes | Yes |
| -en packet_size | Yes | Yes |
| -b batch_size | Yes | Yes |
| -c | Yes | Yes |
| -C { ACP | OEM | RAW | code_page } | Yes | No |
| -d database_name | Yes | Yes |
| -D | Yes | Yes |
| -e err_file | Yes | Yes |
| -E | Yes | Yes |
| -f format_file | Yes | Yes |
| -F first_row | Yes | Yes |
| -G Microsoft Entra-autentisering | Yes | Yes |
| -h"hint [,... n]" | Yes | No |
| -Jag input_file | Yes | No |
| -k | Yes | Yes |
| -K application_intent | Yes | Yes |
| -Jag login_timeout | Yes | Yes |
| -L last_row | Yes | Yes |
| -m max_errors | Yes | Yes |
| -n | Yes | Yes |
| -N | Yes | No |
| -o output_file | Yes | No |
| - P-lösenord | Yes | Yes |
| -q | Yes | Yes |
| -r row_term | Yes | Yes |
| -R | Yes | Yes |
| -S [server_name[\instance_name]] | Yes | Yes |
| -t field_term | Yes | Yes |
| -T | Yes | Yes |
| -U login_id | Yes | Yes |
| -u | Ja 1 | Yes |
| -v | Yes | Yes |
| -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) | Yes | No |
| -w | Yes | Yes |
| -x | Yes | No |
| -Y[s|m|o] | Ja 1 | Yes |
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.
schema
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.
"query"
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.
in
Kopierar från en fil till databastabellen eller vyn. Anger riktningen för masskopiering.
out
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).
-en packet_size
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 | Description |
|---|---|
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
-fanvänds medformatalternativet 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
inanvänds med alternativetouteller-fkrävs en befintlig formatfil.Note
Det är valfritt att använda en formatfil med
in-alternativet ellerout-alternativet. I avsaknad av-falternativet, om-n,-c,-w, eller-Ninte 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 first_row
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 Preview 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.
Important
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
-Galternativet och även använda användarnamnet och lösenordet genom att ange-Ualternativen och-P.I följande exempel exporteras data med autentiseringsuppgifter för Microsoft Entra-användarnamn och lösenord. Exemplet exporterar tabellen
bcptestfrån en databastestdbfrån Azure-servernaadserver.database.windows.netoch 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 xxxxxI följande exempel importeras data med autentiseringsuppgifterna för en Microsoft Entra-användare. Exemplet importerar data från filen
c:\last\data1.dattill en tabellbcptestför databasentestdbpå Azure-servernaadserver.database.windows.netmed 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 xxxxxMicrosoft Entra integrerat
För Microsoft Entra-integrerad autentisering anger du
-Galternativet 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
bcptestfrån databasentestdbpå den logiska servernaadserver.database.windows.netoch lagrar data i filenc:\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 -cI följande exempel importeras data med microsoft Entra-integrerad autentisering. Exemplet importerar data från filtabellen
c:\last\data2.dattill tabellenbcptesti databasentestdbpå den logiska servernaadserver.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 -cMicrosoft Entra Managed Service Identity
Important
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
ODBCoch 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) IDi 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
-Dflaggan 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 -cDet här exemplet skickar en
Client IDtill-AccountId-parametern iConnect-AzAccountfö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 -cMicrosoft 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
-Galternativet 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.comOm 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.comOm 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,
ORDERignoreras 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
-binte 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_BATCHokänt.KILOBYTES_PER_BATCH = cc
Ungefärligt antal kilobyte av data per batch (som cc). Som standard är
KILOBYTES_PER_BATCHokä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
TABLOCKhar angetts. Som standard bestäms låsningsbeteendet av tabellalternativettable lock on bulkload. Mer information finns i sp_tableoption.Note
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.
CHECK_CONSTRAINTS
Anger att alla begränsningar i måltabellen eller vyn måste kontrolleras under massimportoperationen. Utan indikationen
CHECK_CONSTRAINTSignoreras allaCHECK- ochFOREIGN KEY-begränsningar, och efter åtgärden markeras begränsningen på tabellen som icke betrodd.Note
UNIQUE,PRIMARY KEYochNOT NULLbegrä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
CHECKrestriktioner 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
CHECKbegrä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.
Note
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_TRIGGERSinte har angetts körs inga infogningsutlösare.FIRE_TRIGGERSignoreras för argumentenout,queryoutochformat.
-Jag 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 application_intent
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.
-Jag 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 last_row
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_errors
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.
Note
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 output_file
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).
Important
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.
Important
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.
Remarks
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
PATHfö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 -vdu kommandot i Kommandotolken i Windows. Information om hur du anger kommandosökvägen i miljövariabeln finns iPATHMiljö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.exeBcp-verktyget kan också laddas ned separat från Microsoft SQL Server 2016 Feature Pack. Välj antingen
ENU\x64\MsSqlCmdLnUtils.msiellerENU\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 outkommando skapar till exempel en datafil med namnetCurrency Types.dat:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -cOm 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
-qellerOmslut ä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 | Effect |
|---|---|
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. |
Permissions
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_CONSTRAINTShar inte angetts.Att inaktivera begränsningar är standardbeteendet. Om du vill aktivera begränsningar explicit använder du
-halternativet med tipsetCHECK_CONSTRAINTS.Utlösare finns och tipset
FIRE_TRIGGERhar inte angetts.Utlösare utlöses inte som standard. Om du vill utlösa utlösare explicit använder du
-halternativet med tipsetFIRE_TRIGGERS.Du använder alternativet
-Eför att importera identitetsvärden från en datafil.
Note
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-calternativet eller-wom 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-toch-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
-toch-r.
Examples
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.
Basic
Det här exemplet skapar en datafil med namnet
StockItemTransactions_character.bcpoch 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 -TExpanded
Det här exemplet skapar en datafil med namnet
StockItemTransactions_native.bcpoch 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.
Basic
I det här exemplet används datafilen som
StockItemTransactions_character.bcpskapades tidigare.I en kommandotolk anger du följande kommando:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -TExpanded
I det här exemplet används datafilen som
StockItemTransactions_native.bcpskapades 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 -TGranska
Error_in.logochOutput_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.
Note
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.
Note
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
Note
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).
I. 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
Note
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
Note
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.T1itempdbdatabasen med två kolumnerIDochName.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'); GOGenerera 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,RandolphGenerera 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:Note
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.