Udostępnij za pośrednictwem


narzędzie bcp

Zastosowanie:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL database in Microsoft Fabric

Narzędzie programu do kopiowania zbiorczego (bcp) kopiuje dane między wystąpieniem programu SQL Server i plikiem danych w formacie określonym przez użytkownika.

Użyj narzędzia bcp , aby zaimportować dużą liczbę nowych wierszy do tabel programu SQL Server lub wyeksportować dane z tabel do plików danych. Z wyjątkiem sytuacji, gdy jest używana z opcją queryout , narzędzie nie wymaga znajomości języka Transact-SQL. Aby zaimportować dane do tabeli, musisz użyć pliku formatu utworzonego dla tej tabeli lub poznać strukturę tabeli i typy danych, które są prawidłowe dla jego kolumn.

Aby uzyskać więcej informacji na temat wersji narzędzia bcp zainstalowanej w systemie, wymaganiach systemowych i sposobie pobierania narzędzia bcp, zobacz Pobieranie i instalowanie narzędzia bcp.

Note

Pliki danych bcp nie zawierają żadnych informacji o schemacie ani formacie. Jeśli używasz narzędzia bcp do tworzenia kopii zapasowych danych, a następnie upuszczasz lub zmieniasz tabelę źródłową, potrzebujesz identycznej definicji tabeli lub pliku formatu, aby zaimportować dane z powrotem.

Aby zapoznać się z konwencjami składni używanymi do składni narzędzia bcp , zobacz Transact-SQL konwencje składni (Transact-SQL).

Jak używać narzędzia bcp

Aby uzyskać informacje na temat używania narzędzia bcp, w tym przykładowych poleceń, zobacz Jak używać narzędzia bcp.

Korzystanie z narzędzia bcp w systemach Linux i macOS

Aby uzyskać informacje na temat sposobu instalowania narzędzi wiersza polecenia w systemach macOS i Linux, zobacz Instalowanie narzędzi wiersza polecenia sqlcmd i bcp programu SQL Server w systemie Linux.

Zagadnienia dotyczące narzędzia bcp w systemach Linux i macOS

  • Terminacją pola jest tabulator (\t).

  • Terminator wiersza jest nowym wierszem (\n).

  • W przypadku transferów z programu SQL Server do programu SQL Server użyj formatu natywnego (-n). Użyj formatu znaków (-c) tylko wtedy, gdy dane przekroczają się do systemu innego niż SQL Server lub gdy plik danych nie powinien zawierać znaków rozszerzonych. Aby uzyskać więcej informacji, zobacz Tryb znaków i najlepsze rozwiązania dotyczące trybu natywnego.

  • Musisz podać lub usunąć ukośnik odwrotny (\) w argumencie wiersza polecenia. Aby na przykład określić nowy wiersz jako niestandardowy terminator wierszy, użyj jednego z następujących mechanizmów:

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

Obsługa protokołu TDS 8.0

Program SQL Server 2025 (17.x) wprowadza obsługę TDS 8.0 dla narzędzia bcp .

Składnia

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

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

Opcje wiersza polecenia

W poniższej tabeli wymieniono opcje wiersza polecenia dostępne w narzędziu bcp oraz obsługiwane przez nie systemy operacyjne.

Opcja wiersza polecenia Obsługiwane na Windows Obsługiwane w systemach Linux i macOS
Tryb obiektu i tryb transferu
[database_name.]schemat.{table_name | view_name | "zapytanie"} Yes Yes
{wdata_file | outdata_file | queryoutdata_file | format nul} Yes Yes
-q Yes Yes
Połączenie i uwierzytelnianie
-S [server_name[\instance_name]] Yes Yes
-d database_name Yes Yes
-U login_id Yes Yes
-P hasło Yes Yes
-G Uwierzytelnianie Microsoft Entra Yes Yes
-D Yes Yes
-K application_intent Yes Yes
-l login_timeout Yes Yes
-T Yes Yes
-Y[s| m| o] Tak 1 Tak 1
Reprezentacja danych
-c Yes Yes
-C { ACP | OEM | RAW | code_page } Yes No
-n Yes Yes
-N Yes No
-w Yes Yes
-z No Tak 2
Formatowanie plików
-f format_file Yes Yes
-x Yes No
Przetwarzanie wsadowe i wydajność
-a packet_size Yes Yes
-b batch_size Yes Yes
-h"hint [,... n]" Yes No
-m max_errors Yes Yes
-F first_row Yes Yes
-L last_row Yes Yes
-r row_term Yes Yes
-t field_term Yes Yes
Obsługa wartości
-k Yes Yes
-E Yes Yes
Wejście/wyjście plików i logowanie
-i input_file Yes No
-o output_file Yes No
-e err_file Yes Yes
Zgodność i przechowywanie wersji
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) Yes No
-u Tak 1 Tak 1
Różne opcje
-R Yes Yes
-v Yes Yes

1 Wymaga narzędzia bcp w wersji 18 lub nowszej, która jest dostarczana z programem SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 i nowsze.

Tryb obiektu i transferu

database_name

Nazwa bazy danych, która zawiera określoną tabelę lub widok. Jeśli nie określisz tego parametru, zostanie użyta domyślna baza danych użytkownika.

Możesz również jawnie określić nazwę bazy danych za pomocą -d.

schema

Nazwa właściciela tabeli lub widoku. Schemat jest opcjonalny, jeśli użytkownik wykonujący operację jest właścicielem określonej tabeli lub widoku. Jeśli nie określisz schematu, a użytkownik wykonujący operację nie jest właścicielem określonej tabeli ani widoku, program SQL Server zwraca komunikat o błędzie i operacja zostanie anulowana.

table_name

Nazwa tabeli docelowej podczas importowania danych do programu SQL Server (in) i tabeli źródłowej podczas eksportowania danych z programu SQL Server (out).

view_name

Nazwa widoku docelowego podczas kopiowania danych do programu SQL Server (in) i widoku źródłowego podczas kopiowania danych z programu SQL Server (out). W przypadku użycia jako miejsca docelowego (in) widok jest obsługiwany tylko wtedy, gdy wszystkie jego kolumny odwołują się do tej samej tabeli. To ograniczenie nie ma zastosowania, gdy widok jest używany jako źródło (out). Aby uzyskać więcej informacji na temat ograniczeń dotyczących kopiowania danych do widoków, zobacz INSERT.

"query"

Zapytanie Transact-SQL zwracające zestaw wyników. Jeśli zapytanie zwraca wiele zestawów wyników, do pliku danych jest kopiowany tylko pierwszy zestaw wyników; kolejne zestawy wyników są ignorowane. Użyj podwójnych cudzysłowów wokół zapytania i pojedynczych cudzysłowów wokół wszystkich elementów osadzonych w zapytaniu. Należy również określić queryout podczas zbiorczego kopiowania danych z zapytania.

Zapytanie może odwoływać się do procedury składowanej, o ile wszystkie tabele, do których odwołuje się procedura składowana, istnieją przed wykonaniem instrukcji bcp . Jeśli na przykład procedura składowana generuje tymczasową tabelę, instrukcja bcp kończy się niepowodzeniem, ponieważ tabela tymczasowa jest dostępna tylko w czasie wykonywania, a nie podczas wykonania instrukcji. W takim przypadku rozważ wstawienie wyników procedury składowanej do tabeli, a następnie skopiowanie danych z tabeli do pliku danych za pomocą narzędzia bcp .

w

Kopiuje dane z pliku do tabeli bazy danych lub widoku. Określa kierunek kopiowania masowego.

out

Kopiuje dane z tabeli bazy danych lub widoku do pliku. Określa kierunek kopiowania masowego.

Jeśli określisz istniejący plik, plik zostanie zastąpiony. Gdy narzędzie bcp wyodrębnia dane, reprezentuje pusty ciąg jako null i ciąg null jako pusty ciąg.

data_file

Pełna ścieżka pliku danych. Podczas zbiorczego importowania danych do programu SQL Server plik danych zawiera dane do skopiowania do określonej tabeli lub widoku. Podczas zbiorczego eksportowania danych z programu SQL Server plik danych zawiera dane skopiowane z tabeli lub widoku. Ścieżka może mieć od 1 do 255 znaków. Plik danych może zawierać maksymalnie 2^63–1 wiersze.

queryout

Kopiuje dane z zapytania i musi być określone tylko przy zbiorczym kopiowaniu danych z zapytania.

format

Tworzy plik formatu na podstawie określonej opcji (-n, -c, -wlub -N) oraz ograniczników tabeli lub widoku. Podczas zbiorczego kopiowania danych polecenie bcp może odwoływać się do pliku z formatem, co pozwala uniknąć ponownego wprowadzania informacji o formacie w trybie interaktywnym. Opcja format wymaga opcji -f; utworzenie pliku formatu XML wymaga również opcji -x. Aby uzyskać więcej informacji, zobacz Tworzenie pliku formatu za pomocą narzędzia bcp (SQL Server). Musisz określić nul jako wartość (format nul).

-q

Wykonuje instrukcję SET QUOTED_IDENTIFIER ON w połączeniu między narzędziem bcp i wystąpieniem programu SQL Server. Użyj tej opcji, aby określić bazę danych, właściciela, tabelę lub nazwę widoku zawierającą spację lub pojedynczy cudzysłów. Ujęć całą trójczęściową tabelę lub nazwę widoku w cudzysłów ("").

Aby określić nazwę bazy danych zawierającą spację lub pojedynczy cudzysłów, należy użyć -q opcji .

-q nie ma zastosowania do wartości przekazanych do -d.

Aby uzyskać więcej informacji, zobacz sekcję Uwagi w tym artykule.

Połączenie i uwierzytelnianie

-S [server_name[\instance_name]]

Określa nazwę instancji SQL Server, z którą ma nawiązać połączenie, lub, jeśli używasz -D, nazwę DSN.

Jeśli nie określisz serwera, narzędzie bcp łączy się z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym. Ta opcja jest potrzebna podczas uruchamiania polecenia bcp z komputera zdalnego w sieci lub lokalnej nazwanej instancji. Aby nawiązać połączenie z domyślnym wystąpieniem programu SQL Server na serwerze, wystarczy określić server_name. Aby nawiązać połączenie z nazwanym wystąpieniem programu SQL Server, określ wartość <server_name>\<instance_name>.

-d database_name

Określa bazę danych do nawiązania połączenia. Domyślnie narzędzie bcp łączy się z domyślną bazą danych. Jeśli określisz -d <database_name> i trzyczęściową nazwę (database_name.schema.table, przekazaną jako pierwszy parametr do narzędzia bcp), wystąpi błąd, ponieważ nie można dwukrotnie określić nazwy bazy danych. Jeśli database_name zaczyna się od łącznika (-) lub ukośnika (/), nie dodaj spacji między -d i nazwą bazy danych.

-U identyfikator_logowania

Określa identyfikator logowania używany do połączenia z serwerem SQL.

-P hasło

Określa hasło identyfikatora logowania. Jeśli nie używasz tej opcji, polecenie bcp wyświetla monit o hasło. Jeśli używasz tej opcji na końcu wiersza polecenia bez hasła, narzędzie bcp używa domyślnego hasła (NULL).

Ważna

Nie używaj pustego hasła. Użyj silnego hasła.

Aby zamaskować hasło, nie należy określać -P opcji wraz z opcją -U . Zamiast tego po określeniu bcp wraz z opcją -U i innymi przełącznikami (nie określaj -P), naciśnij Enter, a polecenie wyświetli monit o hasło. Ta metoda gwarantuje, że hasło jest maskowane po wprowadzeniu.

Jeśli hasło zaczyna się od łącznika (-) lub ukośnika (/), nie dodawaj spacji między -Pwartością hasła.

W systemach Linux i macOS, jeśli jest używana z opcją -G bez -U, -P określa plik, który zawiera token dostępu firmy Microsoft Entra (wersja 17.8 i nowsze wersje). Plik tokena powinien być w formacie UTF-16LE (bez BOM). Aby uzyskać więcej informacji, zobacz Uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft w narzędziu bcp.

-G

Dotyczy: Azure SQL Database, Azure SQL Managed Instance, SQL Database w usłudze Microsoft Fabric, Azure Synapse Analytics i SQL Server 2022 (16.x) oraz nowsze wersje.

Ten przełącznik jest używany przez klienta do określenia, czy użytkownik jest uwierzytelniany za pomocą identyfikatora Microsoft Entra. Przełącznik -G wymaga programu bcp w wersji 14.0.3008.27 lub nowszej. Aby określić wersję, wykonaj bcp -v. Aby uzyskać więcej informacji, zobacz Use Microsoft Entra authentication with SQL Database or Azure Synapse Analytics or Authentication in SQL Database in Microsoft Fabric (Używanie uwierzytelniania firmy Microsoft Entra z usługą SQL Database lub Azure Synapse Analytics lub uwierzytelnianie w bazie danych SQL w usłudze Microsoft Fabric).

Aby uzyskać pełne szczegóły dotyczące uwierzytelniania Microsoft Entra w programie bcp, zobacz Uwierzytelnianie za pomocą Microsoft Entra ID w narzędziu bcp.

-D

Powoduje, że wartość przekazana do opcji bcp -S jest interpretowana jako nazwa źródła danych (DSN). -D może pojawić się w dowolnym miejscu w wierszu polecenia; kolejność względem -S nie ma znaczenia.

DSN może służyć do:

  • Osadź opcje sterownika, aby uprościć wiersze polecenia.
  • Wymuszaj opcje sterowników, które nie są w inny sposób dostępne z poziomu wiersza polecenia, takie jak MultiSubnetFailover.
  • Pomaga chronić poufne poświadczenia przed odnajdywaniem jako argumentów wiersza polecenia.

Więcej informacji można znaleźć w sekcji Obsługa DSN w sqlcmd i bcp.

-K zamiar_aplikacji

Deklaruje typ obciążenia aplikacji podczas nawiązywania połączenia z serwerem. Jedyną wartością, która jest możliwa, jest ReadOnly. Jeśli nie określisz -K, narzędzie bcp nie obsługuje łączności z repliką pomocniczą w grupie dostępności Always On. Aby uzyskać więcej informacji, zobacz Odciążanie obciążenia tylko do odczytu do pomocniczej repliki zawsze włączonej grupy dostępności.

-l login_timeout

Określa limit czasu logowania. Opcja -l określa liczbę sekund przed upływem limitu czasu logowania do programu SQL Server podczas próby nawiązania połączenia z serwerem. Domyślny limit czasu logowania wynosi 15 sekund. Limit czasu logowania musi być liczbą z zakresu od 0 do 65534. Jeśli dostarczana wartość nie jest liczbowa lub nie mieści się w tym zakresie, narzędzie bcp generuje komunikat o błędzie. Wartość 0 określa nieskończony limit czasu.

-T

Określa, że narzędzie bcp łączy się z serwerem SQL Server za pomocą uwierzytelnionego połączenia przy użyciu zintegrowanych zabezpieczeń. Poświadczenia zabezpieczeń użytkownika sieciowego, login_id i hasła nie są wymagane. Jeśli nie określisz -T, musisz określić -U i -P, aby pomyślnie nawiązać połączenie.

Ważna

Używaj -T tylko podczas nawiązywania połączenia z programem SQL Server przy użyciu zintegrowanego z systemem Windows zaufanego połączenia. Podczas nawiązywania połączenia z usługą Azure SQL Database lub Azure Synapse Analytics -T (zintegrowane uwierzytelnianie systemu Windows) nie jest obsługiwane. W przypadku uwierzytelniania za pomocą Microsoft Entra względem usług platformy Azure lub SQL Server 2022 (16.x) i nowszych wersji użyj polecenia -G (zobacz Uwierzytelnianie za pomocą identyfikatora Microsoft Entra w narzędziu bcp).

-Y[s|m|o]

Dotyczy: bcp w wersji 18 lub nowszej, która jest dostarczana z programem SQL Server 2025 (17.x).

Określa, czy połączenia używają szyfrowania TLS za pośrednictwem sieci. -Y może być o (dla Optional), m (dla Mandatory, wartością domyślną) lub s (dla Strict). Jeśli nie dołączysz -Y wartości, wtedy -Ym (dla Mandatory) jest domyślna.

-u

Dotyczy: bcp w wersji 18 lub nowszej, która jest dostarczana z programem SQL Server 2025 (17.x).

Certyfikat serwera zaufania. W przypadku użycia z opcją szyfrowania połączenia umożliwia szyfrowanie przy użyciu certyfikatu serwera z podpisem własnym.

Reprezentacja danych

-c

Wykonuje operację przy użyciu typu danych znaków. Ta opcja nie wyświetla monitu o każde pole. Używa znaku (char) jako typu przechowywania, bez prefiksów, i używa \t (znak tabulacji) jako separatora pola oraz \r\n (znak nowej linii) jako terminatora wiersza. -c nie jest zgodny z elementem -w.

Aby uzyskać więcej informacji, zobacz Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków.

Aby uzyskać najlepsze rozwiązania, zobacz Najlepsze rozwiązania dotyczące trybu znaków i trybu natywnego.

-C { ACP | OEM | RAW | strona kodowa }

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Określa stronę kodów danych w pliku danych. code_page jest istotne tylko wtedy, gdy dane zawierają kolumny char, varchar lub text z wartościami znaków większymi niż 127 lub mniejsza niż 32.

Określ nazwę sortowania dla każdej kolumny w pliku formatu, z wyjątkiem sytuacji, gdy chcesz, aby opcja 65001 miała priorytet nad specyfikacją sortowania lub strony kodowej.

Wartość strony kodowej Opis
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Domyślna strona kodowa używana przez klienta. Ta strona kodowa jest domyślna, jeśli nie określisz -C.
RAW Nie ma konwersji z jednej strony kodu na inną. Ta opcja jest najszybsza, ponieważ nie ma konwersji.
<code_page> Określony numer strony kodowej, taki jak 850.

Wersje przed programem SQL Server 2016 (13.x) nie obsługują strony kodowej 65001 (kodowanie UTF-8). Wersje rozpoczynające się od wersji 13 mogą importować kodowanie UTF-8 do wcześniejszych wersji programu SQL Server.

-n

Wykonuje operację kopiowania zbiorczego przy użyciu natywnych (baz danych) typów danych. Ta opcja nie wyświetla monitu o każde pole. Używa ona wartości natywnych.

Aby uzyskać więcej informacji, zobacz Używanie formatu natywnego do importowania lub eksportowania danych (SQL Server).

Aby uzyskać najlepsze praktyki, zobacz Najlepsze praktyki dotyczące trybu znaków i trybu natywnego.

-N

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Wykonuje operację kopiowania zbiorczego przy użyciu natywnych typów danych (bazy danych) dla danych nieznakowych i znaków Unicode dla danych tekstowych. Ta opcja oferuje wyższą wydajność alternatywną dla -w opcji i jest przeznaczona do przesyłania danych z jednego wystąpienia programu SQL Server do innego przy użyciu pliku danych. Nie wyświetla monitu dla każdego pola. Użyj tej opcji podczas przesyłania danych zawierających znaki rozszerzone ANSI i chcesz korzystać z wydajności trybu natywnego.

Aby uzyskać więcej informacji, zobacz Używanie formatu natywnego Unicode do importowania lub eksportowania danych (SQL Server).

Jeśli eksportujesz, a następnie importujesz dane do tego samego schematu tabeli przy użyciu narzędzia bcp z -N, może zostać wyświetlone ostrzeżenie o obcięciu, jeśli istnieje kolumna znakowa o stałej długości i nieobsługująca Unicode (na przykład char(10)).

Ostrzeżenie można zignorować. Jednym ze sposobów rozwiązania tego ostrzeżenia jest użycie polecenia -n zamiast -N.

-w

Wykonuje operację kopiowania zbiorczego przy użyciu znaków Unicode. Ta opcja nie wyświetla monitu o każde pole. Używa nchar jako typu przechowywania, bez przedrostków, \t (znak tabulacji) jako separatora pola i \n (znak nowego wiersza) jako terminatora wiersza. -w nie jest zgodny z elementem -c.

Aby uzyskać więcej informacji, zobacz Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków Unicode.

-z

Dotyczy: tylko bcp (ODBC), Linux i macOS. System Windows nie jest obsługiwany.

Włącza obsługę typów danych wektorowych w narzędziu bcp . Ta funkcja jest obecnie domyślnie wyłączona. Po wyłączeniu dane wektorowe są importowane lub eksportowane jako ciągi tablic zmiennoprzecinkowych JSON. Po włączeniu i podczas nawiązywania połączenia z programem SQL Server 2025 (17.x) i nowszymi wersjami dane wektorowe są importowane lub eksportowane w pliku binarnym wektora natywnego.

Formatowanie plików

-f format_file

Określa pełną ścieżkę pliku formatu. Znaczenie tej opcji zależy od środowiska, w którym jest używany, w następujący sposób:

  • W przypadku użycia -f z opcją format określona format_file zostanie utworzona dla określonej tabeli lub widoku. Aby utworzyć plik formatu XML, określ również opcję -x. Aby uzyskać więcej informacji, zobacz Tworzenie pliku formatu za pomocą narzędzia bcp (SQL Server).

  • Jeśli używasz -f z opcją in lub out , wymaga to istniejącego pliku formatu.

    Note

    Użycie pliku formatu z opcją in lub out jest opcjonalne. Jeśli nie określisz opcji -f i nie określisz -n, -c, -w, lub -N, wiersz polecenia poprosi o informacje dotyczące formatu i umożliwi zapisanie Twoich odpowiedzi w pliku formatu. Domyślna nazwa pliku to bcp.fmt.

Jeśli format_file zaczyna się od łącznika (-) lub ukośnika (/), nie dołączaj spacji między -fa wartością format_file.

-x

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Użyj tej opcji z opcjami format i -fformat_file . Generuje on plik formatu opartego na formacie XML zamiast domyślnego pliku formatu innego niż XML. Opcja -x nie działa podczas importowania ani eksportowania danych. Generuje błąd, jeśli jest używany bez zarówno format jak i -fformat_file.

Przetwarzanie wsadowe i wydajność

-a packet_size

Określa liczbę bajtów na pakiet sieciowy, który klient wysyła do i odbiera z serwera. Ustaw tę opcję konfiguracji serwera przy użyciu programu SQL Server Management Studio lub sp_configure procedury składowanej systemu. Można jednak zastąpić opcję konfiguracji serwera pojedynczo przy użyciu tej opcji. packet_size mogą być z zakresu od 4096 bajtów do 65 535 bajtów. Wartość domyślna to 4096.

Zwiększenie rozmiaru pakietu może zwiększyć wydajność operacji kopiowania zbiorczego. Jeśli zażądasz większego pakietu, ale serwer nie może go przyznać, zostanie użyta wartość domyślna. Statystyki wydajności generowane przez narzędzie bcp pokazują używany rozmiar pakietu.

-b batch_size

Określa liczbę wierszy na partię zaimportowanych danych. Każda partia jest importowana i rejestrowana jako oddzielna transakcja, która importuje całą partię przed jego zatwierdzaniem. Domyślnie narzędzie bcp importuje wszystkie wiersze w pliku danych jako jedną partię. Aby rozłożyć wiersze między wiele partii, określ batch_size , która jest mniejsza niż liczba wierszy w pliku danych. Jeśli transakcja dla dowolnej partii nie powiedzie się, tylko wstawienia z bieżącej partii zostaną wycofane. Partie już zaimportowane przez zatwierdzone transakcje nie są dotknięte późniejszą awarią.

-b lub -h "ROWS_PER_BATCH=<bb>" podpowiedź wykluczają się wzajemnie. Użyj -b kiedy chcesz, aby bcp jawnie kontrolował przetwarzanie wsadowe, lub użyj ROWS_PER_BATCH aby zasugerować optymalizatorowi serwera do wysyłania danych jako pojedynczą transakcję.

-h "wskazówki [, ... n]"

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Określa wskazówkę lub wskazówki, które mają być używane podczas zbiorczego importowania danych do tabeli lub widoku.

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

    Kolejność sortowania danych w pliku danych. Wydajność importu zbiorczego poprawia się, jeśli importowane dane są sortowane zgodnie z indeksem klastrowanym w tabeli, jeśli istnieją. Jeśli plik danych jest sortowany w innej kolejności, oznacza to, że inny niż kolejność klastrowanego klucza indeksu lub jeśli w tabeli nie ma indeksu klastrowanego, klauzula ORDER jest ignorowana. Nazwy kolumn, które podajesz, muszą być prawidłowymi nazwami kolumn w tabeli docelowej. Domyślnie narzędzie bcp zakłada, że plik danych jest nieurządkowany. W przypadku zoptymalizowanego importu zbiorczego program SQL Server sprawdza również, czy zaimportowane dane są sortowane.

  • ROWS_PER_BATCH = bb

    Liczba wierszy danych na partię (jako bb). Używany, gdy nie określasz -belementu , co powoduje wysłanie całego pliku danych do serwera jako pojedynczej transakcji. Serwer optymalizuje ładunek zbiorczy zgodnie z wartością bb. Domyślnie ROWS_PER_BATCH jest nieznany.

  • KILOBYTES_PER_BATCH = cc

    Przybliżona liczba kilobajtów danych na partię (jako cc). Domyślnie KILOBYTES_PER_BATCH jest nieznany.

  • TABLOCK

    Określa, że blokada na poziomie tabeli aktualizacji zbiorczej jest uzyskiwana podczas operacji ładowania zbiorczego; w przeciwnym razie uzyskuje się blokadę na poziomie wiersza. Ta wskazówka znacznie poprawia wydajność, ponieważ utrzymywanie blokady podczas operacji kopiowania zbiorczego zmniejsza rywalizację o blokadę w tabeli. Tabelę można załadować jednocześnie z wielu klientów, jeśli tabela nie ma indeksów i TABLOCK jest określona. Domyślnie opcja table lock on bulkload tabeli określa zachowanie blokowania. Aby uzyskać więcej informacji, zobacz sp_tableoption.

    Note

    Jeśli tabela docelowa jest indeksem klastrowanego indeksu kolumnowego, wskazówka TABLOCK nie jest wymagana do ładowania przez wielu równoczesnych klientów, ponieważ każdemu współbieżnemu wątkowi przypisana jest oddzielna grupa wierszy w indeksie i ładuje do niej dane. Aby uzyskać więcej informacji, zobacz Indeksy Columnstore: omówienie.

  • CHECK_CONSTRAINTS

    Określa, że wszystkie ograniczenia w tabeli docelowej lub widoku muszą być sprawdzane podczas operacji importowania zbiorczego. Bez CHECK_CONSTRAINTS wskazówki, jakiekolwiek ograniczenia CHECK i FOREIGN KEY są ignorowane, a po operacji ograniczenie w tabeli jest oznaczone jako niezaufane.

    Note

    UNIQUE, PRIMARY KEYi NOT NULL ograniczenia są zawsze wymuszane.

    W pewnym momencie należy sprawdzić ograniczenia dotyczące całej tabeli. Jeśli tabela nie była pusta przed operacją importowania zbiorczego, koszt ponownego przetestowania konstraintów może przekroczyć koszt stosowania CHECK konstraintów do danych przyrostowych. W związku z tym zwykle można włączyć sprawdzanie ograniczeń podczas przyrostowego importu zbiorczego.

    Sytuacja, w której mogą być wyłączone ograniczenia (zachowanie domyślne), to jeśli dane wejściowe zawierają wiersze naruszające ograniczenia. Wyłączając CHECK ograniczenia, można zaimportować dane, a następnie użyć instrukcji Transact-SQL, aby usunąć dane, które nie są prawidłowe.

    Note

    Przełącznik -mmax_errors nie ma zastosowania do sprawdzania ograniczeń.

  • FIRE_TRIGGERS

    Po określeniu tej opcji z argumentem in wszystkie wyzwalacze wstawiania zdefiniowane w tabeli docelowej są uruchamiane podczas operacji kopiowania zbiorczego. Jeśli nie określisz FIRE_TRIGGERSparametru, wyzwalacze wstawiania nie uruchomią się. FIRE_TRIGGERS jest ignorowane dla argumentów out, queryout i format.

-m max_errors

Określa maksymalną liczbę błędów składniowych, które mogą wystąpić przed anulowaniem operacji narzędzia bcp . Błąd składni oznacza błąd konwersji danych do docelowego typu danych. Suma max_errors wyklucza wszelkie błędy, które serwer może wykryć tylko, na przykład naruszenia ograniczeń.

Wiersz, którego narzędzie bcp nie może skopiować, jest ignorowany i liczony jako jeden błąd. Jeśli nie dołączysz tej opcji, wartość domyślna to 10.

Note

Opcja -m nie ma zastosowania podczas konwertowania typów danych money lub bigint .

-F first_row

Określa liczbę pierwszego wiersza do wyeksportowania z tabeli lub zaimportowania z pliku danych. Ten parametr wymaga wartości większej niż (>) 0, ale mniejszej niż (<) lub równej całkowitej liczbie wierszy. Jeśli nie określisz tego parametru, wartość domyślna to pierwszy wiersz pliku.

first_row może być dodatnią liczbą całkowitą o wartości do 2^63–1. -F first_row używa numerowania opartego na 1.

-L ostatni_wiersz

Określa liczbę ostatniego wiersza do wyeksportowania z tabeli lub zaimportowania z pliku danych. Ten parametr wymaga wartości większej niż (>) 0, ale mniejszej niż (<) lub równej liczbie ostatniego wiersza. Jeśli nie określisz tego parametru, wartość domyślna to ostatni wiersz pliku.

last_row może być dodatnią liczbą całkowitą o wartości do 2^63-1.

- r row_term

Określa rozdzielnik wierszy. Wartość domyślna to \n (znak nowego wiersza). Użyj tego parametru, aby zastąpić domyślny terminator wierszy. Aby uzyskać więcej informacji, zobacz Określanie terminatorów pól i wierszy (SQL Server).

Jeśli określisz terminator wierszy w notacji szesnastkowej w poleceniu bcp , wartość zostanie obcięta na 0x00. Jeśli na przykład określisz 0x410041, zostanie użyte 0x41.

Jeśli row_term zaczyna się od łącznika (-) lub ukośnika (/), nie dołączaj spacji między -r a wartością row_term.

-t field_term

Określa lub definiuje terminator dla pola. Wartość domyślna to \t (znak tabulacji). Użyj tego parametru, aby zastąpić domyślny terminator pola. Aby uzyskać więcej informacji, zobacz Określanie terminatorów pól i wierszy (SQL Server).

Jeśli określisz terminator pola w notacji szesnastkowej w poleceniu bcp , wartość zostanie obcięta na 0x00. Jeśli na przykład określisz 0x410041, zostanie użyte 0x41.

Jeśli field_term zaczyna się od łącznika (-) lub ukośnika (/), nie dołączaj spacji między -t a wartością field_term.

Obsługa wartości

-k

Określa, że puste kolumny zachowują wartość null podczas operacji, zamiast wstawiać wszystkie wartości domyślne dla kolumn. Aby uzyskać więcej informacji, zobacz Zachowywanie wartości null lub wartości domyślnych podczas importowania zbiorczego (SQL Server).

-E

Określa, że operacja używa wartości tożsamości w zaimportowanych plikach danych dla kolumny tożsamości. Jeśli nie określisz -Eparametru , program SQL Server ignoruje wartości tożsamości dla tej kolumny w importowanym pliku danych i automatycznie przypisuje unikatowe wartości na podstawie wartości inicjacji i przyrostów określonych podczas tworzenia tabeli. Aby uzyskać więcej informacji, zobacz DBCC CHECKIDENT.

Jeśli plik danych nie zawiera wartości kolumny tożsamości w tabeli lub widoku, użyj pliku formatu, aby określić, że kolumna tożsamości w tabeli lub widoku powinna zostać pominięta podczas importowania danych. Program SQL Server automatycznie przypisuje unikatowe wartości dla kolumny.

Opcja -E ma specjalne wymaganie dotyczące uprawnień. Aby uzyskać więcej informacji, zobacz "Uwagi" w dalszej części tego artykułu.

Wejście/Wyjście plików i rejestrowanie

-i plik_wejściowy

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Określa nazwę pliku odpowiedzi. Plik zawiera odpowiedzi na pytania dotyczące wiersza polecenia dla każdego pola danych podczas wykonywania operacji kopiowania zbiorczego przy użyciu trybu interaktywnego (-n, -c, -wlub -N nie określono).

Jeśli input_file zaczyna się od łącznika (-) lub ukośnika (/), nie umieszczaj spacji między -i a wartością input_file.

-o plik_wyjsciowy

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Określa nazwę pliku, który odbiera dane wyjściowe przekierowane z wiersza polecenia.

Jeśli output_file zaczyna się od łącznika (-) lub ukośnika (/), nie dołączaj spacji między -o a wartością output_file.

-e err_file

Określa pełną ścieżkę pliku błędu używanego do przechowywania wierszy, których narzędzie bcp nie może przenieść z pliku do bazy danych. Komunikaty o błędach z polecenia bcp są wysyłane na stację roboczą użytkownika. Jeśli nie używasz tej opcji, plik błędu nie zostanie utworzony.

Jeśli err_file zaczyna się od łącznika (-) lub ukośnika (/), nie umieszczaj spacji pomiędzy -e a wartością err_file.

Zgodność i przechowywanie wersji

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

Dotyczy: tylko system Windows. Nieobsługiwane w systemach Linux i macOS.

Wykonuje operację kopiowania zbiorczego przy użyciu typów danych z wcześniejszej wersji programu SQL Server. Ta opcja nie prosi o ustawienia dla każdego pola; korzysta z wartości domyślnie ustawionych.

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

Na przykład aby wygenerować dane dla typów, które program SQL Server 2000 (8.x) nie obsługuje, ale zostały wprowadzone w nowszych wersjach, użyj -V80 opcji .

Aby uzyskać więcej informacji, zobacz Importowanie danych w formacie natywnym i znakowym z wcześniejszych wersji SQL Server.

Różne opcje

-R

Określa, że narzędzie bcp kopiuje dane walutowe, daty i godziny do programu SQL Server przy użyciu formatu regionalnego zdefiniowanego dla ustawień regionalnych komputera klienckiego. Domyślnie narzędzie bcp ignoruje ustawienia regionalne.

-v

Raportuje numer wersji narzędzia bcp i prawa autorskie.

Uwagi

  • Narzędzie bcp obsługuje natywne pliki danych zgodne ze wszystkimi obsługiwanymi wersjami programu SQL Server.

  • Narzędzie bcp wyświetla tylko pierwsze 512 bajtów komunikatu o błędzie.

uprawnienia

Operacja bcp out wymaga uprawnień SELECT do tabeli źródłowej.

Operacja bcp in minimalnie wymaga uprawnień SELECT i INSERT na tabeli docelowej. Ponadto uprawnienia są wymagane, ALTER TABLE jeśli którekolwiek z następujących warunków są spełnione:

  • Ograniczenia istnieją, a CHECK_CONSTRAINTS wskazówka nie jest określona.

    Wyłączenie ograniczeń jest zachowaniem domyślnym. Aby włączyć ograniczenia jawnie, użyj opcji -h z podpowiedzią CHECK_CONSTRAINTS.

  • Wyzwalacze istnieją, a FIRE_TRIGGERS wskazówka nie jest określona.

    Domyślnie wyzwalacze nie są wyzwalane. Aby jawnie uruchamiać wyzwalacze, użyj -h opcji z wskazówką FIRE_TRIGGERS .

  • Możesz użyć opcji importowania -E wartości tożsamości z pliku danych.

Uzyskiwanie pomocy

Współtworzenie dokumentacji SQL

Czy wiesz, że możesz samodzielnie edytować zawartość SQL? Jeśli to zrobisz, nie tylko pomożesz ulepszyć naszą dokumentację, ale także zostaniesz uznany za współautora strony.

Aby uzyskać więcej informacji, zobacz Edytowanie dokumentacji środowiska Microsoft Learn.