Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Narzędzie programu do kopiowania zbiorczego (bcp) kopiuje dane między wystąpieniem programu Microsoft SQL Server i plikiem danych w formacie określonym przez użytkownika.
Aby użyć narzędzia bcp w systemie Linux, zobacz Instalowanie narzędzi wiersza polecenia sqlcmd i bcp programu SQL Server w systemie Linux. Aby uzyskać szczegółowe informacje na temat używania narzędzia bcp z usługą Azure Synapse Analytics, zobacz Ładowanie danych za pomocą narzędzia bcp.
Narzędzie bcp może służyć do importowania dużej liczby nowych wierszy do tabel programu SQL Server lub eksportowania danych 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.
Uwaga
Jeśli używasz narzędzia bcp do tworzenia kopii zapasowych danych, utwórz plik formatu w celu zarejestrowania formatu danych. Pliki danych bcpnie zawierają żadnych informacji o schemacie ani formacie, więc jeśli tabela lub widok zostanie porzucony i nie masz pliku formatu, może nie być możliwe zaimportowanie danych.
Aby zapoznać się z konwencjami składni używanymi do składni narzędzia bcp , zobacz Transact-SQL konwencje składni.
Aby uzyskać informacje na temat programu bcp w systemach Linux i macOS, zobacz Zagadnienia dotyczące narzędzia bcp w systemach Linux i macOS.
Pobierz najnowszą wersję narzędzia bcp
Narzędzia wiersza polecenia są ogólnie dostępne, ale są wydawane z pakietem instalatora dla programu SQL Server 2019 (15.x) i nowszych wersji.
Pobierz sterownik ODBC dla programu SQL Server
Pobierz narzędzia wiersza polecenia firmy Microsoft 15 dla programu SQL Server (x64)
Pobierz narzędzia wiersza polecenia firmy Microsoft 15 dla programu SQL Server (x86)
Informacje o wersji
- Numer wydania: 15.0.4298.1
- Numer kompilacji: 15.0.4298.1
- Data wydania: 7 kwietnia 2023 r.
Narzędzie bcp obsługuje uwierzytelnianie Microsoft Entra, w tym obsługę uwierzytelniania wieloskładnikowego (MFA) dla usługi Azure SQL Database, bazy danych SQL w usłudze Microsoft Fabric i Azure Synapse Analytics.
Uwaga
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Wymagania systemowe
- Windows 8, Windows 8.1, Windows 10, Windows 11
- Windows Server 2016, Windows Server 2019, Windows Server 2022
Ten składnik wymaga najnowszego sterownika Microsoft ODBC 17 dla programu SQL Server.
Aby sprawdzić wersję narzędzia bcp , wykonaj bcp -v
polecenie i upewnij się, że jest używana wersja 15.0.4298.1 lub nowsza.
Obsługa protokołu TDS 8.0
Program SQL Server 2025 (17.x) w wersji zapoznawczej 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]]
Zagadnienia i ograniczenia
- Narzędzie bcp ma ograniczenie, że komunikat o błędzie zawiera tylko 512-bajtowe znaki. Wyświetlane są tylko pierwsze 512 bajtów komunikatu o błędzie.
Zagadnienia dotyczące narzędzia bcp w systemach Linux i macOS
Terminacją pola jest tabulator (
\t
).Terminator wiersza jest nowym wierszem (
\n
).Tryb znaków jest preferowanym formatem plików formatu bcp i plików danych, które nie zawierają znaków rozszerzonych.
Ukośnik odwrotny (
\
) w argumencie wiersza polecenia musi być cytowany lub uniknięty. Aby na przykład określić nowy wiersz jako niestandardowy terminator wierszy, należy użyć jednego z następujących mechanizmów:-r\\n
-r"\n"
-r'\n'
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 w linii poleceń | Obsługiwane na Windows | Obsługiwane w systemach Linux i macOS |
---|---|---|
[database_name.]schemat.{table_name | view_name | "zapytanie"} | Tak | Tak |
{wdata_file | outdata_file | queryoutdata_file | format nul} | Tak | Tak |
-a packet_size | Tak | Tak |
-b batch_size | Tak | Tak |
-c | Tak | Tak |
-C { ACP | OEM | RAW | code_page } | Tak | Nie. |
-d database_name | Tak | Tak |
-D | Tak | Tak |
-e err_file | Tak | Tak |
-E | Tak | Tak |
-f format_file | Tak | Tak |
-F first_row | Tak | Tak |
-G Uwierzytelnianie Microsoft Entra | Tak | Tak |
-h"hint [,... n]" | Tak | Nie. |
-i input_file | Tak | Nie. |
-k | Tak | Tak |
-K zamiar_aplikacji | Tak | Tak |
-l login_timeout | Tak | Tak |
-L ostatni_wiersz | Tak | Tak |
-m max_errors | Tak | Tak |
-n | Tak | Tak |
-N | Tak | Nie. |
-o plik_wyjściowy | Tak | Nie. |
-P hasło | Tak | Tak |
-q | Tak | Tak |
- r row_term | Tak | Tak |
-R | Tak | Tak |
-S [server_name[\instance_name]] | Tak | Tak |
-t field_term | Tak | Tak |
-T | Tak | Tak |
-U login_id | Tak | Tak |
-u | Tak 1 | Tak |
-v | Tak | Tak |
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) | Tak | Nie. |
-w | Tak | Tak |
-x | Tak | Nie. |
-Y[s|m|o] | Tak 1 | Tak |
Tak1 SQL Server 2025 (17.x) wersja przedpremierowa i nowsze wersje.
database_name
Nazwa bazy danych, w której znajduje się określona tabela lub widok. Jeśli nie zostanie określony, jest to domyślna baza danych użytkownika.
Możesz również jawnie określić nazwę bazy danych za pomocą -d
.
schemat
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 schemat nie jest określony, 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
). Tylko widoki, w których wszystkie kolumny odwołują się do tej samej tabeli, mogą być używane jako widoki docelowe. Aby uzyskać więcej informacji na temat ograniczeń dotyczących kopiowania danych do widoków, zobacz INSERT.
"zapytanie"
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.
queryout
należy również określić 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 z pliku do tabeli lub widoku w bazie danych. Określa kierunek kopiowania masowego.
na zewnątrz
Kopiuje 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. Gdy dane są importowane zbiorczo do programu SQL Server, plik danych zawiera dane do skopiowania do określonej tabeli lub widoku. Gdy dane są eksportowane zbiorczo 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.
limit zapytania
Kopie pochodzące z zapytania muszą być określone tylko podczas zbiorczego kopiowania danych z zapytania.
formatowanie
Tworzy plik formatu na podstawie określonej opcji (-n
, -c
, -w
lub -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 w formacie XML również wymaga 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
).
-a rozmiar_pakietu
Określa liczbę bajtów, na pakiet sieciowy, wysyłany do i z serwera. Opcję konfiguracji serwera można ustawić przy użyciu programu SQL Server Management Studio (lub sp_configure
procedury składowanej systemu). Jednak opcja konfiguracji serwera może zostać zastąpiona 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ększony rozmiar pakietu może zwiększyć wydajność operacji kopiowania zbiorczego. Jeśli zażądano większego pakietu, ale nie można go udzielić, zostanie użyta wartość domyślna. Statystyki wydajności wygenerowane 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 wszystkie wiersze w pliku danych są importowane jako jedna partia. 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, które zostały już zaimportowane przez zatwierdzone transakcje, nie mają wpływu na późniejszą awarię.
Nie używaj tej opcji z opcją -h "ROWS_PER_BATCH=<bb>"
.
-c
Wykonuje operację przy użyciu typu danych znaków. Ta opcja nie wyświetla monitu dla każdego pola; używa znaku jako typu magazynu, bez prefiksów i (\t
znak tabulacji) jako separatora pola oraz (\r\n
znak nowego wiersza) jako terminatora wierszy.
-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.
-C { ACP | OEM | RAW | strona kodowa }
Dotyczy: tylko dla 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.
Należy określić nazwę sortowania dla każdej kolumny w pliku formatu, z wyjątkiem sytuacji, gdy chcesz, aby opcja 65001 miała priorytet w specyfikacji sortowania/strony kodowej.
Wartość strony kodowej | Opis |
---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252). |
OEM |
Domyślna strona kodowa używana przez klienta. Jest to domyślna strona kodowa używana, jeśli -C nie jest określona. |
RAW |
Nie ma konwersji z jednej strony kodu na inną. Jest to najszybsza opcja, ponieważ nie ma konwersji. |
<code_page> |
Określony numer strony kodowej; na przykład 850. Wersje przed wersją 13 (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. |
-d database_name
Określa bazę danych do nawiązania połączenia. Domyślnie narzędzie bcp łączy się z domyślną bazą danych użytkownika. Jeśli określono zarówno -d <database_name>
, jak i nazwę w formacie trójczłonowym (database_name.schema.table, użyta jako pierwszy parametr do 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.
-D
Powoduje, że wartość przekazana do opcji bcp -S
jest interpretowana jako nazwa źródła danych (DSN).
DSN może służyć do:
- włączanie opcji sterownika, aby uprościć wiersze poleceń
- wymuszanie opcji sterowników, które nie są inaczej dostępne z poziomu wiersza polecenia, takich jak MultiSubnetFailover,
- lub w celu ochrony poufnych poświadczeń przed tym, by były dostępne jako argumenty wiersza polecenia.
Więcej informacji można znaleźć w sekcji Obsługa DSN w sqlcmd i bcp.
-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 ta opcja nie jest używana, 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.
-E
Określa, że wartość tożsamości lub wartości w zaimportowanych plikach danych mają być używane dla kolumny tożsamości. Jeśli -E
nie zostanie podana, wartości tożsamości dla tej kolumny w importowanym pliku danych są ignorowane, a program SQL Server 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.
-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:
Jeśli
-f
jest używana z opcjąformat
, określona format_file jest tworzona 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 jest używana z opcją
in
lubout
,-f
wymaga istniejącego pliku formatu.Uwaga
Użycie pliku formatu z opcją
in
lubout
jest opcjonalne. W przypadku braku opcji-f
, jeśli-n
,-c
,-w
lub-N
nie są określone, wiersz polecenia wyświetla informacje o formacie i umożliwia zapisanie odpowiedzi w pliku formatu (którego domyślna nazwa tobcp.fmt
).
Jeśli format_file zaczyna się od łącznika (-
) lub ukośnika (/
), nie dołączaj spacji między -f
a wartością format_file.
-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 liczby wierszy. W przypadku braku 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 jest oparty na 1.
-G
Dotyczy: Usługa Azure SQL Database, baza danych SQL w usłudze Microsoft Fabric i tylko usługa Azure Synapse Analytics.
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 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).
Ważne
W systemach Linux i macOS interakcyjne uwierzytelnianie firmy Microsoft Entra nie jest obecnie obsługiwane. Microsoft Entra zintegrowane uwierzytelnianie wymaga sterownika Microsoft ODBC Driver 17 dla programu SQL Server w wersji 17.6.1 lub nowszej oraz prawidłowo skonfigurowanego środowiska Kerberos.
Aby sprawdzić, czy twoja wersja narzędzia bcp obejmuje obsługę uwierzytelniania Microsoft Entra, wpisz bcp --help
i sprawdź, czy widzisz -G
na liście dostępnych argumentów.
Nazwa użytkownika i hasło firmy Microsoft Entra
Jeśli chcesz użyć danych logowania Microsoft Entra, możesz zapewnić opcję
-G
i także skorzystać z danych logowania, podając opcje-U
i-P
.Poniższy przykład eksportuje dane przy użyciu poświadczeń Microsoft Entra, obejmujących nazwę użytkownika i hasło. Przykład eksportuje tabelę
bcptest
z bazy danychtestdb
z serweraaadserver.database.windows.net
platformy Azure i przechowuje dane w plikuc:\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
Poniższy przykład importuje dane przy użyciu poświadczeń użytkownika firmy Microsoft Entra. Przykład importuje dane z pliku
c:\last\data1.dat
do tabelibcptest
dla bazy danychtestdb
na serwerzeaadserver.database.windows.net
platformy Azure przy użyciu nazwy użytkownika i hasła firmy 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 integrated
W przypadku użycia zintegrowanego uwierzytelniania Microsoft Entra podaj opcję bez nazwy użytkownika lub hasła. Ta konfiguracja wymaga, aby bieżące konto użytkownika systemu Windows (konto, w którym jest uruchomione polecenie bcp ) było federacyjne z identyfikatorem Microsoft Entra:
Poniższy przykład eksportuje dane przy użyciu zintegrowanego uwierzytelniania firmy Microsoft. Przykład eksportuje tabelę
bcptest
z bazy danychtestdb
na serwerzeaadserver.database.windows.net
logicznym i przechowuje dane w plikuc:\last\data2.dat
przy użyciu poświadczeń systemu Windows federacyjnych z identyfikatorem Microsoft Entra:bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Poniższy przykład importuje dane przy użyciu zintegrowanego uwierzytelniania firmy Microsoft. Przykład importuje dane z tabeli plików
c:\last\data2.dat
do tabelibcptest
w bazie danychtestdb
na serwerze logicznymaadserver.database.windows.net
, przy użyciu poświadczeń systemu Windows sfederowanych z Microsoft Entra ID.bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
Tożsamość zarządzanej usługi Microsoft Entra
Ważne
bcp jest ściśle powiązany ze sterownikiem. Główne wersje zarówno narzędzia bcp, jak i sterownika, z którym tworzona jest nazwa DSN, muszą być takie same. Aby określić wersję, wykonaj
bcp -v
.Eksportowanie danych za pomocą narzędzia bcp przy użyciu zarządzanej tożsamości usługi w systemie Windows wymaga skonfigurowania DSN.
Aby skonfigurować DSN w systemie Windows:
Naciśnij klawisz Windows na klawiaturze
Wpisz
ODBC
i wybierz odpowiednią wersję administratora źródła danych ODBCWybierz kartę DSN użytkownika lub System DSN
Wybierz pozycję Dodaj i postępuj zgodnie z monitami
Po wyświetleniu monitu o typ uwierzytelniania wybierz pozycję Uwierzytelnianie tożsamości usługi zarządzanej platformy Azure
Jeśli masz tożsamość zarządzaną przypisaną użytkownikowi, wklej wartość tożsamości w polu
Object (principal) ID
w dolnej sekcji karty uwierzytelnianiaAby skonfigurować DSN, postępuj zgodnie ze wskazówkami.
Aby zapoznać się z pełną instrukcją, w tym zrzutami ekranu, zobacz Tworzenie i edytowanie DSN w interfejsie użytkownika.
Po skonfigurowaniu nazwy DSN, można wywołać narzędzie bcp z flagą , aby wskazać, że przekazana wartość
-D
jest nazwą DSN.bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
Token dostępu Microsoft Entra ID
Dotyczy: Tylko systemy Linux i macOS. System Windows nie jest obsługiwany.
Użytkownicy programu bcp w wersji 17.8 lub nowszej w systemach Linux i macOS mogą również uwierzytelniać się przy użyciu tokenu. W poniższych przykładach program PowerShell w systemie Linux umożliwia pobranie tokenu dostępu.
Ten przykład pobiera token dostępu i umieszcza go w pliku w celu wyeksportowania danych przy użyciu tożsamości zarządzanej przypisanej przez system.
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
Ten przykład przekazuje
Client ID
do parametru-AccountId
wConnect-AzAccount
, aby pobrać token dostępu i umieścić go w pliku tokenów. Token jest następnie używany do eksportowania danych przy użyciu określonej tożsamości zarządzanej przypisanej przez użytkownika.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
Interakcyjne rozwiązanie Microsoft Entra
Dotyczy: tylko dla Windows. Systemy Linux i macOS nie są obsługiwane.
Interakcyjne uwierzytelnianie firmy Microsoft, dostępne dla wszystkich usług Azure SQL i SQL Server 2022 (16.x) i nowszych, umożliwia uwierzytelnianie przy użyciu interakcyjnego okna dialogowego, które obsługuje również uwierzytelnianie wieloskładnikowe.
Uwierzytelnianie interakcyjne firmy Microsoft Entra wymaga programu bcpw wersji 15.0.1000.34 lub nowszej oraz odBC w wersji 17.2 lub nowszej.
Aby włączyć uwierzytelnianie interakcyjne, podaj opcję
-G
tylko z nazwą użytkownika (-U
) i bez hasła.W poniższym przykładzie dane są eksportowane przy użyciu uwierzytelniania interakcyjnego firmy Microsoft, w tym określania nazwy użytkownika konta Microsoft Entra.
Tryb interaktywny wymaga ręcznego wprowadzenia hasła lub dla kont z włączonym uwierzytelnianiem wieloskładnikowym należy ukończyć skonfigurowaną metodę uwierzytelniania wieloskładnikowego.
bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
Jeśli używasz użytkownika Microsoft Entra, który jest kontem systemu Windows z domeny federacyjnej, nazwa użytkownika wprowadzona w wierszu polecenia musi zawierać swoją domenę (na przykład
joe@contoso.com
):bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
Jeśli użytkownicy gościnni istnieją w określonej dzierżawie Microsoft Entra i są częścią grupy obecnej w bazie danych Azure SQL Database, która ma uprawnienia do wykonywania polecenia bcp, wtedy używany jest ich alias użytkownika gościnnego (na przykład
keith0@adventure-works.com
).
-h "wskazówki [, ... n]"
Dotyczy: tylko dla 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ść importowania zbiorczego jest lepsza, 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. Podane nazwy kolumn 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
-b
nie jest określony, co powoduje wysłanie całego pliku danych do serwera jako pojedynczej transakcji. Serwer optymalizuje ładunek zbiorczy zgodnie z wartością bb. DomyślnieROWS_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ć współbieżnie z wielu klientów, jeśli tabela nie ma indeksów i
TABLOCK
jest określona. Domyślnie zachowanie blokowania jest określane przez opcjętable lock on bulkload
tabeli. Aby uzyskać więcej informacji, zobacz sp_tableoption.Uwaga
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.SPRAWDZANIE_OGRANICZEŃ
Określa, że wszystkie ograniczenia w tabeli docelowej lub widoku muszą być sprawdzane podczas operacji importowania zbiorczego.
CHECK_CONSTRAINTS
Bez wskazówki żadneCHECK
ograniczenia i iFOREIGN KEY
są ignorowane, a po operacji ograniczenie w tabeli jest oznaczone jako niezauważone.Uwaga
UNIQUE
,PRIMARY KEY
iNOT 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 zaleca się, aby zwykle włączać 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. Przy
CHECK
wyłączonych ograniczeniach można zaimportować dane, a następnie użyć instrukcji Transact-SQL, aby usunąć dane, które nie są prawidłowe.Narzędzie bcp wymusza teraz sprawdzanie poprawności danych i sprawdzanie danych, które mogą powodować niepowodzenie skryptów, jeśli są wykonywane na nieprawidłowych danych w pliku danych.
Uwaga
Przełącznik
-m
max_errors nie ma zastosowania do sprawdzania ograniczeń.WYZWALACZE_OGNIA
Po określeniu tej opcji z argumentem in wszystkie wyzwalacze wstawiania zdefiniowane w tabeli docelowej są uruchamiane podczas operacji kopiowania zbiorczego. Jeśli
FIRE_TRIGGERS
nie zostanie określony, nie zostaną uruchomione wyzwalacze wstawiania.FIRE_TRIGGERS
jest ignorowane dla argumentówout
,queryout
iformat
.
-i input_file
Dotyczy: tylko dla Windows. Nieobsługiwane w systemach Linux i macOS.
Określa nazwę pliku odpowiedzi zawierającego odpowiedzi na pytania wiersza polecenia dla każdego pola danych, gdy jest wykonywana kopia zbiorcza przy użyciu trybu interaktywnego (-n
, -c
, -w
lub -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.
-k
Określa, że puste kolumny powinny zachować wartość null podczas operacji, a nie mieć żadnych wartości domyślnych dla wstawionych kolumn. Aby uzyskać więcej informacji, zobacz Zachowywanie wartości null lub wartości domyślnych podczas importowania zbiorczego (SQL Server).
-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 -K
nie zostanie określony, narzędzie bcp nie obsługuje łączności z repliką wtórną 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 podana 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.
-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. W przypadku braku 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.
-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 można wykryć tylko na serwerze, takie jak naruszenia ograniczeń.
Wiersz, którego nie można skopiować przy użyciu narzędzia bcp, jest ignorowany i jest liczony jako jeden błąd. Jeśli ta opcja nie jest dołączona, wartość domyślna to 10.
Uwaga
Opcja -m
nie ma również zastosowania do konwertowania typów danych money lub bigint .
-n
Wykonuje operację kopiowania zbiorczego przy użyciu natywnych (baz danych) typów danych. Ta opcja nie monitoruje każdego pola; używa wartości domyślnych.
Aby uzyskać więcej informacji, zobacz Używanie formatu natywnego do importowania lub eksportowania danych (SQL Server).
-N
Dotyczy: tylko dla 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
.
-o plik_wyjściowy
Dotyczy: tylko dla 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.
-P hasło
Określa hasło identyfikatora logowania. Jeśli ta opcja nie jest używana, polecenie bcp wyświetla monit o hasło. Jeśli ta opcja jest używana na końcu wiersza polecenia bez hasła, narzędzie bcp używa hasła domyślnego (NULL
).
Ważne
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 klawisz Enter, a polecenie wyświetli monit o podanie hasła. 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 -P
wartością hasła.
-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.
- 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.
-R
Określa, że dane waluty, daty i godziny są zbiorczo kopiowane do programu SQL Server przy użyciu formatu regionalnego zdefiniowanego dla ustawień regionalnych komputera klienckiego. Domyślnie ustawienia regionalne są ignorowane.
-S [server_name[\instance_name]]
Określa nazwę wystąpienia programu SQL Server, do którego ma nawiązać połączenie, lub jeśli używany jest -D
, nazwę DSN.
Jeśli serwer nie zostanie określony, narzędzie bcp łączy się z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym. Ta opcja jest wymagana, gdy polecenie bcp jest uruchamiane z zdalnego komputera w sieci lub z 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, podaj server_name**\**instance_name.
-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.
-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 -T
nie zostanie określony, musisz określić -U
i -P
, aby pomyślnie nawiązać połączenie.
Ważne
Gdy narzędzie bcp łączy się z programem SQL Server z zaufanym połączeniem przy użyciu zintegrowanych zabezpieczeń, użyj -T
opcji (zaufane połączenie) zamiast kombinacji nazwy użytkownika i hasła . Gdy narzędzie bcp łączy się z usługą SQL Database lub Azure Synapse Analytics, użycie uwierzytelniania systemu Windows lub uwierzytelniania microsoft Entra nie jest obsługiwane. Użyj opcji -U
i -P
.
-U identyfikator_logowania
Określa identyfikator logowania używany do połączenia z serwerem SQL.
-u
Dotyczy:bcp w wersji 18 lub nowszej.
Certyfikat serwera zaufania. W przypadku użycia z opcją Szyfruj dla połączenia umożliwia szyfrowanie przy użyciu certyfikatu serwera z podpisem własnym.
-v
Raportuje numer wersji narzędzia bcp i prawa autorskie.
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }
Dotyczy: tylko dla 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) Wersja zapoznawcza
Na przykład aby wygenerować dane dla typów nieobsługiwanych przez program SQL Server 2000 (8.x), ale zostały wprowadzone w nowszych wersjach programu SQL Server, użyj -V80
opcji .
Aby uzyskać więcej informacji, zobacz Importowanie danych w formacie natywnym i znakowym z wcześniejszych wersji SQL Server.
-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 typ magazynowania, bez prefiksó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.
-x
Dotyczy: tylko dla Windows. Nieobsługiwane w systemach Linux i macOS.
Ta opcja jest używana z opcjami format
i -f
i generuje plik formatu XML zamiast domyślnego pliku formatu innego niż XML. Element -x
nie działa podczas importowania ani eksportowania danych. Generuje błąd, jeśli jest używany bez zarówno format
jak i -f
format_file.
-Y[s|m|o]
Dotyczy:bcp w wersji 18 lub nowszej.
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
, -Ym
(dla mandatory
) jest wartością domyślną.
Uwagi
Klient bcp 13.0 jest instalowany podczas instalowania narzędzi programu Microsoft SQL Server 2019 (15.x). Jeśli narzędzia są instalowane dla wielu wersji programu SQL Server, w zależności od kolejności wartości
PATH
zmiennej środowiskowej, może być używany wcześniejszy klient bcp zamiast klienta bcp 13.0. Ta zmienna środowiskowa definiuje zestaw katalogów używanych przez system Windows do wyszukiwania plików wykonywalnych. Aby dowiedzieć się, której wersji używasz, uruchombcp -v
polecenie w wierszu polecenia systemu Windows. Aby uzyskać informacje o sposobie ustawiania ścieżki polecenia w zmiennejPATH
środowiskowej, zobacz Zmienne środowiskowe lub wyszukaj zmienne środowiskowe w Pomocy systemu Windows.Aby upewnić się, że jest uruchomiona najnowsza wersja narzędzia bcp , należy usunąć wszystkie starsze wersje narzędzia bcp .
Aby określić, gdzie są zainstalowane wszystkie wersje narzędzia bcp , wpisz w wierszu polecenia:
where bcp.exe
Narzędzie bcp można również pobrać oddzielnie z pakietu Microsoft SQL Server 2016 Feature Pack. Wybierz wartość
ENU\x64\MsSqlCmdLnUtils.msi
lubENU\x86\MsSqlCmdLnUtils.msi
.Pliki formatu XML są obsługiwane tylko wtedy, gdy narzędzia programu SQL Server są instalowane razem z klientem natywnym programu SQL Server.
Aby uzyskać informacje o tym, gdzie znaleźć lub jak uruchomić narzędzie bcp i o konwencji składni narzędzi wiersza polecenia, zobacz Narzędzia wiersza polecenia SQL (aparat bazy danych).
Aby uzyskać informacje na temat przygotowywania danych do operacji importowania lub eksportowania zbiorczego, zobacz Przygotowywanie danych do eksportu lub importu zbiorczego.
Aby uzyskać informacje o tym, kiedy operacje wstawiania wierszy wykonywane przez importowanie zbiorcze są rejestrowane w dzienniku transakcji, zobacz Wymagania wstępne dotyczące minimalnego rejestrowania w importowaniu zbiorczym.
Używanie dodatkowych znaków specjalnych
Znaki
<
,>
,|
,&
i^
są specjalnymi znakami powłoki poleceń i muszą być poprzedzone znakiem unikowym (^
) lub ujęte w znaki cudzysłowu w przypadku użycia w łańcuchu znaków (na przykład"StringContaining&Symbol"
). Jeśli używasz cudzysłowów do ujęć ciąg zawierający jeden z znaków specjalnych, znaki cudzysłowu są ustawiane jako część wartości zmiennej środowiskowej.
Natywna obsługa plików danych
W programie SQL Server narzędzie bcp obsługuje natywne pliki danych zgodne z wersjami programu SQL Server, począwszy od programu SQL Server 2000 (8.x) i nowszych.
Obliczone kolumny i kolumny sygnatury czasowej
Wartości w pliku danych importowanym dla kolumn obliczeniowych lub sygnatur czasowych są ignorowane, a program SQL Server automatycznie przypisuje wartości. Jeśli plik danych nie zawiera wartości kolumn obliczonych lub sygnatur czasowych w tabeli, użyj pliku formatu, aby określić, że kolumny obliczone lub sygnatury czasowej w tabeli powinny zostać pominięte podczas importowania danych; Program SQL Server automatycznie przypisuje wartości dla kolumny.
Kolumny obliczone i kolumny typu 'timestamp' są zbiorczo kopiowane z serwera SQL Server do pliku danych w zwykły sposób.
Określanie identyfikatorów zawierających spacje lub znaki cudzysłowu
Identyfikatory programu SQL Server mogą zawierać znaki, takie jak osadzone spacje i znaki cudzysłowu. Takie identyfikatory muszą być traktowane w następujący sposób:
Po określeniu identyfikatora lub nazwy pliku zawierającego spację lub cudzysłów w wierszu polecenia należy ująć identyfikator w cudzysłów ("").
Na przykład następujące
bcp out
polecenie tworzy plik danych o nazwieCurrency Types.dat
:bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
Aby określić nazwę bazy danych zawierającą spację lub cudzysłów, należy użyć
-q
opcji .W przypadku nazw właścicieli, tabel lub widoków zawierających osadzone spacje lub znaki cudzysłowu można wykonać następujące czynności:
Określ
-q
opcję lubUmieść nazwę właściciela, tabeli lub widoku w nawiasach kwadratowych (
[]
) wewnątrz cudzysłowów.
Walidacja danych
Narzędzie bcp wymusza teraz sprawdzanie poprawności danych i sprawdzanie danych, które mogą powodować niepowodzenie skryptów, jeśli są wykonywane na nieprawidłowych danych w pliku danych. Na przykład narzędzie bcp sprawdza teraz, czy:
Natywne reprezentacje typów danych zmiennoprzecinkowych lub realnych są prawidłowe.
Dane Unicode mają długość parzystową.
Nie można teraz załadować formularzy nieprawidłowych danych, które mogą być importowane zbiorczo we wcześniejszych wersjach programu SQL Server; mając na uwadze, że we wcześniejszych wersjach błąd nie wystąpił, dopóki klient nie próbował uzyskać dostępu do nieprawidłowych danych. Dodana walidacja minimalizuje niespodzianki podczas wykonywania zapytań dotyczących danych po zbiorczym załadowaniu.
Zbiorcze eksportowanie lub importowanie dokumentów SQLXML
Aby zbiorczo wyeksportować lub zaimportować dane SQLXML, użyj jednego z następujących typów danych w pliku formatu.
Typ danych | Efekt |
---|---|
SQLCHAR lub SQLVARYCHAR |
Dane są wysyłane na stronie kodu klienta lub na stronie kodowej implikowanej przez sortowanie). Efekt jest taki sam jak określanie przełącznika -c bez określania pliku formatu. |
SQLNCHAR lub SQLNVARCHAR |
Dane są wysyłane jako Unicode. Efekt jest taki sam jak określanie przełącznika -w bez określania pliku formatu. |
SQLBINARY lub SQLVARYBIN |
Dane są wysyłane bez żadnej konwersji. |
Uprawnienia
Operacja bcp out
wymaga uprawnień SELECT
do tabeli źródłowej.
bcp in
Operacja minimalnie wymaga SELECT
/INSERT
uprawnień w 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_TRIGGER
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.
Uwaga
Wymaganie ALTER TABLE
uprawnień do tabeli docelowej zostało wprowadzone w programie SQL Server 2005 (9.x). To wymaganie może spowodować niepowodzenie skryptów bcp , które nie wymuszają wyzwalaczy i kontroli ograniczeń, jeśli konto użytkownika nie ma ALTER TABLE
uprawnień do tabeli docelowej.
Najlepsze rozwiązania dotyczące trybu znaków (-c
) i trybu natywnego (-n
)
Ta sekcja zawiera zalecenia dotyczące trybu znaków (-c
) i trybu natywnego (-n
).
(Administrator/Użytkownik) Jeśli to możliwe, użyj formatu natywnego (
-n
), aby uniknąć problemu z separatorem. Użyj formatu natywnego, aby wyeksportować i zaimportować przy użyciu programu SQL Server. Wyeksportuj dane z programu SQL Server przy użyciu-c
opcji lub-w
, jeśli dane zostaną zaimportowane do bazy danych innej niż SQL Server.(Administrator) Zweryfikuj dane podczas używania
bcp out
. Jeśli na przykład używasz wartościbcp out
,bcp in
, a następniebcp out
sprawdź, czy dane są prawidłowo eksportowane, a wartości terminatora nie są używane jako część niektórych wartości danych. Rozważ zastąpienie domyślnych terminatorów (przy użyciu opcji-t
i-r
) na losowe wartości szesnastkowe, aby uniknąć konfliktów między wartościami terminatora a wartościami danych.(Użytkownik) Użyj długiego i unikatowego terminatora (dowolnej sekwencji bajtów lub znaków), aby zminimalizować prawdopodobieństwo konfliktu z rzeczywistą wartością ciągu. Można to zrobić przy użyciu opcji
-t
i-r
.
Przykłady
Przykłady w tej sekcji korzystają z przykładowej WideWorldImporters
bazy danych dla programu SQL Server 2016 (13.x) i nowszych wersji, usługi Azure SQL Database i usługi Azure SQL Managed Instance.
WideWorldImporters
można pobrać z witryny https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Zobacz składnię instrukcji RESTORE dotyczącą przywracania przykładowej bazy danych.
Przykładowe warunki testu
O ile nie określono inaczej, przykłady zakładają, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, w którym uruchamiasz polecenie bcp. Katalog o nazwie D:\bcp
jest używany w wielu przykładach.
Poniższy skrypt Transact-SQL tworzy pustą kopię WideWorldImporters.Warehouse.StockItemTransactions
tabeli, a następnie dodaje ograniczenie klucza podstawowego:
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
W razie potrzeby możesz obcinać tabelę StockItemTransactions_bcp
:
TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;
Odp. Identyfikowanie wersji narzędzia bcp
W wierszu polecenia wprowadź następujące polecenie:
bcp -v
B. Kopiowanie wierszy tabeli do pliku danych (z zaufanym połączeniem)
Poniższe przykłady ilustrują opcję out
na tabeli WideWorldImporters.Warehouse.StockItemTransactions
.
Podstawowa
W tym przykładzie tworzony jest plik danych o nazwie
StockItemTransactions_character.bcp
, a dane tabeli kopiowane są do niego przy użyciu formatu znakowego.W wierszu polecenia wprowadź następujące polecenie:
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
Rozszerzony
W tym przykładzie tworzony jest plik danych o nazwie
StockItemTransactions_native.bcp
i kopiuje do niego dane tabeli przy użyciu formatu natywnego . Przykład: określa również maksymalną liczbę błędów składniowych, plik błędu i plik wyjściowy.W wierszu polecenia wprowadź następujące polecenie:
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
Przejrzyj Error_out.log
i Output_out.log
.
Error_out.log
powinna być pusta. Porównaj rozmiary plików między StockItemTransactions_character.bcp
i StockItemTransactions_native.bcp
.
C. Kopiowanie wierszy tabeli do pliku danych (z uwierzytelnianiem w trybie mieszanym)
Poniższy przykład ilustruje out
opcję na WideWorldImporters.Warehouse.StockItemTransactions
tabeli. W tym przykładzie tworzony jest plik danych o nazwie StockItemTransactions_character.bcp
, a dane tabeli kopiowane są do niego przy użyciu formatu znakowego.
W przykładzie przyjęto założenie, że używasz uwierzytelniania w trybie mieszanym i musisz użyć przełącznika -U
w celu określenia identyfikatora logowania. Ponadto, chyba że nawiązujesz połączenie z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym, użyj przełącznika -S
, aby określić nazwę systemu i opcjonalnie nazwę wystąpienia.
W wierszu polecenia wprowadź następujące polecenie: (system wyświetla monit o hasło).
bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>
D. Kopiowanie danych z pliku do tabeli
Poniższe przykłady ilustrują opcję in
w tabeli WideWorldImporters.Warehouse.StockItemTransactions_bcp
z wykorzystaniem wcześniej utworzonych plików.
Podstawowa
W tym przykładzie użyto wcześniej utworzonego
StockItemTransactions_character.bcp
pliku danych.W wierszu polecenia wprowadź następujące polecenie:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
Rozszerzony
W tym przykładzie użyto wcześniej utworzonego
StockItemTransactions_native.bcp
pliku danych. Przykład: użyj wskazówkiTABLOCK
, określa rozmiar partii, maksymalną liczbę błędów składniowych, plik błędu i plik wyjściowy.W wierszu polecenia wprowadź następujące polecenie:
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
Przejrzyj
Error_in.log
iOutput_in.log
.
E. Kopiowanie określonej kolumny do pliku danych
Aby skopiować określoną kolumnę, możesz użyć queryout
opcji . Poniższy przykład kopiuje tylko kolumnę StockItemTransactionID
Warehouse.StockItemTransactions
tabeli do pliku danych.
W wierszu polecenia wprowadź następujące polecenie:
bcp "SELECT StockItemTransactionID FROM WideWorldImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\bcp\StockItemTransactionID_c.bcp -c -T
F. Kopiowanie określonego wiersza do pliku danych
Aby skopiować określony wiersz, możesz użyć queryout
opcji . Poniższy przykład kopiuje tylko wiersz osoby o nazwie Amy Trefl
z tabeli WideWorldImporters.Application.People
do pliku danych Amy_Trefl_c.bcp
.
Uwaga
Przełącznik -d
służy do identyfikowania bazy danych.
W wierszu polecenia wprowadź następujące polecenie:
bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\bcp\Amy_Trefl_c.bcp -d WideWorldImporters -c -T
G. Kopiowanie danych z zapytania do pliku danych
Aby skopiować zestaw wyników z instrukcji Transact-SQL do pliku danych, użyj queryout
opcji . Poniższy przykład kopiuje nazwy z WideWorldImporters.Application.People
tabeli uporządkowane według pełnej People.txt
nazwy do pliku danych.
Uwaga
Przełącznik -t
służy do tworzenia pliku rozdzielanego przecinkami.
W wierszu polecenia wprowadź następujące polecenie:
bcp "SELECT FullName, PreferredName FROM WideWorldImporters.Application.People ORDER BY FullName" queryout D:\bcp\People.txt -t, -c -T
H. Tworzenie plików formatu
Poniższy przykład tworzy trzy różne pliki formatu dla Warehouse.StockItemTransactions
tabeli w WideWorldImporters
bazie danych. Przejrzyj zawartość każdego utworzonego pliku.
W wierszu polecenia wprowadź następujące polecenia:
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
Uwaga
Aby użyć przełącznika -x
, musisz użyć klienta bcp 9.0. Aby uzyskać informacje o sposobie korzystania z klienta bcp 9.0, zobacz sekcję Uwagi .
Aby uzyskać więcej informacji, zobacz Użyj plików w formacie innym niż XML (SQL Server) i pliki w formacie XML (SQL Server).
Ja. Użycie pliku formatującego do zbiorczego importowania z użyciem bcp
Aby użyć wcześniej utworzonego pliku formatu podczas importowania danych do wystąpienia programu SQL Server, użyj przełącznika -f
wraz z opcją in
. Na przykład następujące polecenie zbiorczo kopiuje zawartość pliku danych , StockItemTransactions_character.bcp
do kopii Warehouse.StockItemTransactions_bcp
tabeli przy użyciu wcześniej utworzonego pliku StockItemTransactions_c.xml
formatu .
Uwaga
Przełącznik -L
służy do importowania tylko pierwszych 100 rekordów.
W wierszu polecenia wprowadź następujące polecenie:
bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T
Uwaga
Pliki formatu są przydatne, gdy pola pliku danych różnią się od kolumn tabeli; na przykład w ich liczbie, kolejności lub typach danych. Aby uzyskać więcej informacji, zobacz Pliki formatu do importu lub eksportu danych (SQL Server).
J. Określanie strony kodowej
Poniższy fragment kodu przedstawia import bcp podczas określania strony kodowej 65001.
bcp MyTable in "D:\data.csv" -T -c -C 65001 -t , ...
K. Przykładowy plik wyjściowy korzystający z pól niestandardowych i terminatorów wierszy
W tym przykładzie przedstawiono dwa przykładowe pliki wygenerowane przez narzędzie bcp przy użyciu pól niestandardowych i terminatorów wierszy.
Utwórz tabelę
dbo.T1
wtempdb
bazie danych z dwiema kolumnamiID
iName
.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
Wygeneruj plik wyjściowy z przykładowej tabeli
dbo.T1
przy użyciu niestandardowego terminatora pól.W tym przykładzie nazwa serwera to
MYSERVER
, i-t ,
określa terminator pola niestandardowego.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
Oto zestaw wyników.
1,Natalia 2,Mark 3,Randolph
Wygeneruj plik wyjściowy z przykładowej tabeli
dbo.T1
przy użyciu niestandardowego terminatora pola i niestandardowego terminatora wierszy.W tym przykładzie nazwa serwera to
MYSERVER
,-t ,
określa terminator pola niestandardowego i-r :
określa niestandardowy terminator wierszy.bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
Oto zestaw wyników.
1,Natalia:2,Mark:3,Randolph:
Uwaga
Znak końca wiersza jest zawsze dodawany, nawet w ostatnim rekordzie. Jednak terminator pola nie jest dodawany do ostatniego pola.
Dodatkowe przykłady
Następujące artykuły zawierają przykłady użycia narzędzia bcp:
Formaty danych dla importu zbiorczego lub eksportu zbiorczego (SQL Server)
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu natywnego
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków
- używanie formatu natywnego Unicode do importowania lub eksportowania danych (SQL Server)
- Importowanie lub eksportowanie danych (SQL Server) przy użyciu formatu znaków Unicode
Zachowaj wartości null lub wartości domyślne podczas importowania zbiorczego (SQL Server)
Zachowaj wartości tożsamości podczas zbiorczego importowania danych (SQL Server)
Formatowanie plików do importowania lub eksportowania danych (SQL Server)
- Tworzenie pliku formatu przy użyciu narzędzia bcp (SQL Server)
- Używanie pliku formatu do zbiorczego importowania danych (SQL Server)
- Użyj pliku formatu, aby pominąć kolumnę tabeli (SQL Server)
- Użyj pliku formatu, aby pominąć pole danych (SQL Server)
- Użyj pliku formatu do mapowania kolumn tabeli na pola pliku danych (SQL Server)
Przykłady zbiorczego importowania i eksportowania dokumentów XML (SQL Server)
Powiązana zawartość
- Przygotowywanie danych do eksportu zbiorczego lub importowania
- MASOWE WSTAWIANIE (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Formatowanie plików do importowania lub eksportowania danych (SQL Server)
Uzyskiwanie pomocy
- Pomysły na język SQL: masz sugestie dotyczące ulepszania programu SQL Server?
- Microsoft Q & A (SQL Server)
- DBA Stack Exchange (tag sql-server): Zadaj pytania na temat SQL Server
- Stack Overflow (tag sql-server): Odpowiedzi na pytania dotyczące programowania SQL
- Postanowienia licencyjne i informacje dotyczące programu Microsoft SQL Server
- opcje pomocy technicznej dla użytkowników biznesowych
- Dodatkowa pomoc i informacje zwrotne dotyczące programu SQL Server
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.