Narzędzie bcp
Narzędzie bcp kopiuje masowo dane między wystąpieniem programu Microsoft SQL Server a plikiem danych w formacie określonym przez użytkownika.Narzędzie bcp może być używane do importowania dużej liczby nowych wierszy do tabel programu SQL Server lub wyeksportowania danych z tabel do plików danych.Z wyjątkiem używania z opcją queryout, narzędzie nie wymaga wiedzy o języku Transact-SQL.Aby zaimportować dane do tabeli, należy użyć pliku formatu utworzonego dla tej tabeli lub zrozumieć strukturę tabeli i typy danych, które są dozwolone w jej kolumnach.
Aby zapoznać się z konwencjami składni narzędzia bcp, zobacz Konwencje składni języka Transact-SQL (Transact-SQL).
Ostrzeżenie
Jeśli używasz narzędzia bcp do tworzenia kopii zapasowych danych, utwórz plik formatu w celu zarejestrowania formatu danych.Pliki danych narzędzia bcp nie zawierają żadnych informacji o schemacie ani formacie, więc jeśli tabela lub widok zostaną usunięte, a nie masz pliku formatu, zaimportowanie danych może okazać się niemożliwe.
Składnia
bcp {[[database_name.][schema].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-x] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-d database_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-t field_term]
[-r row_term] [-i input_file] [-o output_file] [-a packet_size]
[-S [server_name[\instance_name]]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]
Argumenty
database_name
Nazwa bazy danych, w której znajduje się określona tabela lub widok.Jeżeli nie podano, jest to domyślna baza danych użytkownika.Można również jawnie określić nazwę bazy danych za pomocą opcji -d.
owner
Nazwa właściciela tabeli lub widoku.Parametr owner jest opcjonalny, jeśli użytkownik wykonujący operację jest właścicielem określonej tabeli lub widoku.Jeśli parametr owner nie został określony i użytkownik wykonujący operację nie jest właścicielem danej tabeli lub widoku, program SQL Server zwraca komunikat o błędzie, a operacja zostaje anulowana.table_name
Jest nazwą tabeli docelowej podczas importowania danych do programu SQL Server (in) oraz tabeli źródłowej podczas eksportowania danych z programu SQL Server (out).view_name
Jest nazwą widoku docelowego podczas kopiowania danych do programu SQL Server (in) oraz widoku źródłowego podczas kopiowania danych z programu SQL Server (out).Widokami docelowymi mogą być tylko widoki, w których wszystkie kolumny odwołują się do tej samej tabeli.Aby uzyskać więcej informacji na temat ograniczeń kopiowania danych do widoków, zobacz INSERT (Transact-SQL)."query"
Zapytanie języka Transact-SQL, które zwraca zestaw wyników.Jeżeli zapytanie zwraca wiele zestawów wyników, takich jak instrukcję SELECT, która określa klauzulę COMPUTE, tylko pierwszy zestaw wyników jest kopiowany do pliku danych; kolejne zestawy wyników są ignorowane.Używaj podwójnych cudzysłowów na granicach zapytań oraz pojedynczych cudzysłowów na granicach wszelkich elementów wbudowanych w zapytaniach.Podczas masowego kopiowania danych z zapytania musi być określony również parametr queryout.Zapytanie może się odwoływać do procedury składowanej, jeśli tylko przed wykonaniem instrukcji narzędzia bcp istnieją wszystkie tabele, do których odwołania znajdują się w procedurze.Na przykład, jeśli procedura składowana generuje tymczasową tabelę, wykonanie instrukcji narzędzia bcp nie powiedzie się, ponieważ tymczasowa tabela jest dostępna tylko w czasie wykonywania, a nie podczas inicjowania instrukcji.W takim przypadku należy rozważyć wstawienie wyników procedury składowanej do tabeli, a następnie użycie narzędzia bcp w celu skopiowania danych z tabeli do pliku danych.
in | out| queryout | format
Określa kierunek masowego kopiowania w następujący sposób:Parametr in kopiuje z pliku do tabeli lub widoku bazy danych.
Parametr out kopiuje z tabeli lub widoku bazy danych do pliku.Jeśli określisz istniejący plik, jest on zastępowany.Podczas wyodrębniania danych należy zauważyć, że narzędzie bcp reprezentuje pusty ciąg jako wartość null, a ciąg null jako pusty ciąg znaków.
Parametr queryout kopiuje z zapytania i musi być określony tylko podczas masowego kopiowania danych z zapytania.
Parametr formattworzy plik formatu na podstawie określonej opcji (-n, -c, -w lub -N) i ograniczników tabeli lub widoku.Podczas masowego kopiowania danych narzędzie bcp może odwoływać się do pliku formatu, co pozwala uniknąć konieczności wielokrotnego interaktywnego wprowadzania informacji o formacie.Opcja format wymaga opcji -f. Tworzenie pliku w formacie XML wymaga również opcji -x.Aby uzyskać więcej informacji, zobacz Tworzenie pliku formatu.
data_file
Pełna ścieżkę pliku danych.Podczas zbiorczego importowania danych do programu SQL Server plik danych zawiera dane do skopiowania do określonej tabeli lub widoku.Podczas masowego eksportowania danych z programu SQL Server plik danych zawiera dane skopiowane z określonej tabeli lub widoku.Ścieżka może mieć od 1 do 255 znaków.Plik danych może zawierać maksymalnie 263 - 1 wierszy.Ważne: W przypadku opcji format parametr data_file (formatnul) musi mieć wartość nul.
-mmax_errors
Określa maksymalną dozwoloną liczbę błędów składni, zanim operacja narzędzia bcp zostanie anulowana.Błąd składni sugeruje błąd konwersji danych na docelowy typ.Suma max_errors nie obejmuje błędów, które można wykryć tylko na serwerze, takich jak ograniczenia naruszeń.Wiersz, którego narzędzie bcp nie może skopiować, jest ignorowany i liczony jako jeden błąd.Jeśli opcja ta nie jest uwzględniona, wartość domyślna to 10.
Ostrzeżenie
Opcja -m nie stosuje się również do konwertowania typów danych money i bigint.
-fformat_file
Określa pełną ścieżkę do pliku formatu.Znaczenie tej opcji zależy od środowiska, w którym jest używana, w następujący sposób:Jeśli opcja -f jest używana z opcją format, określony format_file jest tworzony dla określonej tabeli lub widoku.Aby utworzyć plik w formacie XML, należy również określić opcję -x.Aby uzyskać więcej informacji, zobacz Tworzenie pliku formatu.
Jeśli opcja -f jest używana z opcją in lub out, wymaga istniejącego pliku formatu.
Ostrzeżenie
Używanie pliku formatu z opcją in lub out nie jest obowiązkowe.W przypadku braku opcji -f, jeśli nie określono opcji -n, -c, -w ani -N, polecenie monituje o podanie informacji o formacie i pozwala zapisać swoje odpowiedzi w pliku formatu (którego domyślna nazwa pliku to Bcp.fmt).
Jeśli nazwa format_file rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -f a nazwą format_file.
-x
W połączeniu z opcjami format i -fformat_file powoduje wygenerowanie pliku formatu opartego na języku XML zamiast domyślnie w formacie innym niż XML.Opcja -x nie działa podczas importowania ani eksportowania danych.Generuje błąd, jeśli zostanie użyta bez opcji format ani -fformat_file.Ostrzeżenie
Aby użyć przełącznika -x, należy używać klienta bcp w wersji 10.0.Aby uzyskać informacje, jak korzystać z klienta bcp w wersji 10.0, patrz fragment zatytułowany „Uwagi” w dalszej części tego tematu.
-eerr_file
Określa pełną ścieżkę pliku błędów używanego do przechowywania wszelkich wierszy, których narzędzie bcp nie może przenieść z pliku do bazy danych.Komunikaty o błędach pochodzące z polecenia narzędzia bcp są kierowane do stacji roboczej użytkownika.Jeśli ta opcja nie jest używana, pliku błędów nie jest tworzony.Jeśli nazwa err_file rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -e a nazwą err_file.
-Ffirst_row
Określa numer pierwszego wiersza, który ma zostać wyeksportowany do tabeli lub zaimportowany z pliku danych.Ten parametr wymaga wartości większej niż (>) 0, ale mniejszej niż (<) lub równej (=) całkowitej liczbie wierszy.W przypadku braku tego parametru domyślnym jest pierwszy wiersz pliku.first_row może być dodatnią liczbą całkowitą o wartość maksymalnie 2^ 63-1.Parametr -Ffirst_row jest oparty na 1.
-Llast_row
Określa numer ostatniego wiersza, który ma zostać wyeksportowany do tabeli lub zaimportowany z pliku danych.Ten parametr wymaga wartości większej niż (>) 0, ale mniejszej niż (<) lub równej (=) numerowi ostatniego wiersza.W przypadku braku tego parametru domyślnym jest ostatni wiersz pliku.last_row może być dodatnią liczbą całkowitą o wartość maksymalnie 2^ 63-1.
-bbatch_size
Określa liczbę wierszy w partii importowanych danych.Każda partia jest importowana i rejestrowana jako oddzielna transakcja importująca całą partię, po której jest zatwierdzana.Domyślnie wszystkie wiersze w pliku danych są importowane jako jedna partia.Aby rozłożyć wiersze między wiele partii, należy określić batch_size mniejszy niż liczba wierszy w pliku danych.Jeśli transakcja dla którejkolwiek partii nie powiedzie się, cofane są tylko wstawienia z bieżącej partii.Partie już zaimportowane przez zatwierdzone transakcje nie są dotknięte późniejszym niepowodzeniem.Opcji tej nie należy używać w połączeniu z opcją **-h"**ROWS_PER_BATCH =bb".
Aby uzyskać więcej informacji, zobacz Zarządzanie instancje importu zbiorczego.
-ddatabase_name
Określa bazę danych, z którą ma zostać nawiązane połączenie.Domyślnie narzędzie bcp.exe łączy się z domyślną bazą danych użytkownika.Wystąpi błąd, jeśli parametr -ddatabase_name jest określony wraz z trzyczęściową nazwą (database_name.schema.table, która jest przekazywana jako pierwszy parametr do narzędzia bcp.exe).Jest to spowodowane tym, że nazwy bazy danych nie można określić dwa razy.
Jeśli database_name rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy dodawać spacji między opcją -d a nazwą bazy danych.
-n
Wykonuje operację masowego kopiowania za pomocą macierzystych (bazy danych) typów danych.Ta opcja nie monituje o podanie wartości dla każdego pola; używa wartości macierzystych.Aby uzyskać więcej informacji, zobacz Do importowania lub eksportowania danych przy użyciu formatu macierzystego.
-c
Wykonuje operację przy użyciu danych znakowych.Ta opcja nie monituje o podanie wartości dla każdego pola; używa char jako typ magazynu, bez prefiksów oraz z \t (znakiem tabulacji) jako separatorem pola i \r\n (znakiem nowego wiersza) jako terminatorem wiersza.Aby uzyskać więcej informacji, zobacz Do importowania lub eksportowania danych przy użyciu formatu znaków.
-N
Wykonuje operację masowego kopiowania za pomocą macierzystych (bazy danych) typów danych dla danych niebędących danymi znakowymi oraz typu Unicode dla danych znakowych.Ta opcja oferuje lepszą wydajność niż opcja -w i jest przeznaczona do przenoszenia danych z jednego wystąpienia programu SQL Server do innego przy użyciu pliku danych.Nie monituje o podanie wartości dla każdego pola.Użyj tej opcji, gdy są przesyłane dane, które zawierają rozszerzone znaki ANSI, i chcesz skorzystać z lepszej wydajności trybu macierzystego.Aby uzyskać więcej informacji, zobacz Przy użyciu formatu Unicode macierzystego do importowania lub eksportowania danych.
Począwszy od programu SQL Server 2005 z dodatkiem SP1, jeśli wyeksportujesz, a następnie zaimportujesz dane do tego samego schematu tabeli za pomocą narzędzia bcp.exe z opcją -N, może zostać wyświetlone ostrzeżenie o obcięciu, jeśli istnieje kolumna ze znakami o ustalonej długości innymi niż Unicode (na przykład char(10)).
Ostrzeżenie może być ignorowane.Jednym ze sposobów uniknięcia tego ostrzeżenia jest użycie opcji -n zamiast opcji -N.
-w
Wykonuje operację masowego kopiowania przy użyciu znaków Unicode.Ta opcja nie monituje o podanie wartości dla każdego pola; używa nchar jako typ magazynu, bez prefiksów, z \t (znakiem tabulacji) jako separatorem pola i \n (znakiem nowego wiersza) jako terminatorem wiersza.Aby uzyskać więcej informacji, zobacz Do importowania lub eksportowania danych przy użyciu formatu znaków Unicode.
-V (70 | 80 | 90 )
Wykonuje operację masowego kopiowania za pomocą typów danych ze starszej wersji programu SQL Server.Ta opcja nie monituje o podanie wartości dla każdego pola; używa wartości domyślnych.70 = SQL Server 7.0
80 = SQL Server 2000
90 = SQL Server 2005
Na przykład, aby wygenerować dane dla typów nieobsługiwanych przez program SQL Server 7.0, ale wprowadzonych w nowszych wersjach programu SQL Server (na przykład bigint, sql_variant i xml), należy użyć opcji -V70.
Aby uzyskać więcej informacji, zobacz Importowanie macierzystego i znaków formatowania danych z wcześniejszych wersji programu SQL Server.
-q
Wykonuje instrukcję SET QUOTED_IDENTIFIERS ON na styku między narzędziem bcp a wystąpieniem programu SQL Server.Ta opcja umożliwia określenie nazwy bazy danych, właściciela, tabeli lub widoku, która zawiera spację lub znak pojedynczego cudzysłowu.Całą trzyczęściową nazwę tabeli lub widoku należy ująć w znaki cudzysłowu ("").Aby określić nazwę bazy danych, która zawiera spację lub znak pojedynczego cudzysłowu, należy użyć opcji –q.
Opcja -q nie ma zastosowania do wartości przekazywanych do opcji -d.
Aby uzyskać więcej informacji, zobacz sekcję Uwagi w dalszej części tego tematu.
-C { ACP | OEM | RAW | code_page }
Określa stronę kodową danych w pliku danych.code_page ma znaczenie tylko wtedy, gdy dane zawierają kolumny typu char, varchar lub text ze znakami o wartościach większych niż 127 lub mniejszych niż 32.Ostrzeżenie
Zaleca się określić nazwę sortowania dla każdej kolumny w pliku formatu.
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 nie określono parametru -C.
RAW
Brak konwersji jednej strony kodowej na inną.Jest to najszybsza opcja, ponieważ nie jest dokonywana żadna konwersja.
code_page
Numer konkretnej strony kodowej, na przykład 850.
Ważne:SQL Server nie obsługuje strony kodowej 65001 (kodowanie UTF-8).Aby uzyskać więcej informacji, zobacz Kopiowanie danych między różne sposoby sortowania.
-tfield_term
Określa terminator pola.Wartością domyślną jest \t (znak tabulacji).Ten parametr umożliwia zastąpienie domyślnego terminatora pola.Aby uzyskać więcej informacji, zobacz Określanie pola i terminatory wiersza.Jeśli określisz terminator pola w zapisie szesnastkowym w poleceniu narzędzia bcp.exe, wartość zostanie obcięta na 0x00.Na przykład jeśli zostanie określony 0x410041, wykorzystuje się 0x41.
Jeśli parametr field_term rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -t a wartością parametru field_term.
-rrow_term
Określa terminator wiersza.Wartością domyślną jest \n (znak nowego wiersza).Ten parametr umożliwia zastąpienie domyślnego terminatora wiersza.Aby uzyskać więcej informacji, zobacz Określanie pola i terminatory wiersza.Jeśli określisz terminator wiersza w zapisie szesnastkowym w poleceniu narzędzia bcp.exe, wartość zostanie obcięta na 0x00.Na przykład jeśli zostanie określony 0x410041, wykorzystuje się 0x41.
Jeśli parametr row_term rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -r a wartością parametru row_term.
-iinput_file
Określa nazwę pliku odpowiedzi zawierającego odpowiedzi na pytania wiersza polecenia dla każdego pola danych, gdy kopiowanie masowe jest wykonywane przy użyciu trybu interakcyjnego (tzn. bez określenia atrybutu -n, -c, -w ani -N).Jeśli nazwa input_file rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -i a nazwą input_file.
-ooutput_file
Określa nazwę pliku, który otrzymuje dane wyjściowe przekierowane z wiersza polecenia.Jeśli nazwa output_file rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy umieszczać spacji między opcją -o a nazwą output_file.
-apacket_size
Określa liczbę bajtów na pakiet sieciowy przesyłanych do i z serwera.Opcję konfiguracji serwera można ustawić za pomocą programu SQL Server Management Studio (lub systemowej procedury składowanej sp_configure).Jednakże opcja konfiguracji serwera może być zastąpiona na zasadzie indywidualnej przy użyciu tej opcji.Parametr packet_size może mieć wartości od 4096 do 65 535 bajtów; wartość domyślna wynosi 4096.Zwiększenie rozmiaru pakietu może poprawić wydajność operacji masowego kopiowania.Jeśli wystąpi żądanie o większy pakiet, ale nie można go zrealizować, używana jest wielkość domyślna.Statystyki wydajności generowane przez narzędzie bcp pokazują używany rozmiar pakietu.
-Sserver_name[ **\instance_name]
Określa wystąpienie programu SQL Server, z którym ma być nawiązywane połączenie.Jeśli nie określono żadnego serwera, narzędzie bcp łączy się z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym.Ta opcja jest wymagana, gdy narzędzie bcp jest uruchamiane ze zdalnego komputera w sieci lub z lokalnego wystąpienia nazwanego.Aby nawiązać połączenie z domyślnym wystąpieniem programu SQL Server na serwerze, należy określić tylko parametr server_name.Aby połączyć z nazwanym wystąpieniem programu SQL Server, należy określić parametr server_name\**instance_name.-Ulogin_id
Określa identyfikator logowania używany do łączenia z programem SQL Server.Uwaga dotycząca zabezpieczeń Gdy narzędzie bcp łączy się z programem SQL Server za pomocą zaufanego połączenia ze zintegrowanymi zabezpieczeniami, użyj opcji -T (zaufanego połączenia) zamiast kombinacji parametrów user name i password.
-Ppassword
Określa hasło dla identyfikatora logowania.Jeśli ta opcja nie jest używana, narzędzie bcp monituje o hasło.Jeśli ta opcja jest używana na końcu wiersza polecenia bez hasła, narzędzie bcp używa domyślnego hasła (NULL).Uwaga dotycząca zabezpieczeń Nie należy używać pustego hasła. Należy używać silnego hasła.
Do zamaskowania hasła nie używaj opcji -P wraz z opcją -U.Zamiast tego po określeniu polecenia bcp wraz z opcją -U i innymi przełącznikami (nie określaj opcji -P) naciśnij klawisz ENTER, a narzędzie będzie monitować o hasło.Metoda ta zapewnia, że hasło będzie maskowane, gdy jest wprowadzane.
Jeśli parametr password rozpoczyna się łącznikiem (-) lub ukośnikiem (/), nie należy dodawać spacji między opcją -P a parametrem password.
-T
Określa, że narzędzie bcp łączy się z programem SQL Server za pomocą zaufanego połączenia przy użyciu zintegrowanych zabezpieczeń.Poświadczenia zabezpieczeń użytkownika sieci, login_id i password, nie są wymagane.Jeśli nie określono opcji –T, należy określić opcje –U i –P, aby się pomyślnie zalogować.-v
Zwraca numer wersji narzędzia bcp informacje o prawach autorskich.-R
Określa, że dane waluty, daty i godziny są masowo kopiowane do programu SQL Server w formacie regionalnym określonym w ustawieniach regionalnych komputera klienta.Domyślnie ustawienia regionalne są ignorowane.-k
Określa, że puste kolumny powinny zachować wartość null w czasie operacji zamiast wstawiania do kolumn wartości domyślnych.Aby uzyskać więcej informacji, zobacz Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego.-E
Określa, że wartość tożsamości lub wartości w pliku importowanych danych mają być stosowane do kolumny tożsamości.Jeśli nie określono opcji -E, wartości tożsamości w tej kolumnie w importowanym pliku danych są ignorowane i program SQL Server automatycznie przypisuje wartości unikatowe w oparciu o wartości początkowe i wartości przyrostu określone podczas tworzenia tabeli.Jeśli plik danych nie zawiera wartości dla kolumny tożsamości w tabeli lub widoku, aby określić, że kolumna tożsamości w tabeli lub widoku powinna być pominięta podczas importowania danych, należy użyć pliku formatu; program SQL Server automatycznie przypisuje wartości unikatowe dla kolumny.Aby uzyskać więcej informacji, zobacz DBCC CHECKIDENT (Transact-SQL).
Opcja -E wymaga specjalnych uprawnień.Aby uzyskać więcej informacji, zobacz sekcję „Uwagi” w dalszej części tego tematu.
Aby uzyskać więcej informacji na temat zachowywania wartości tożsamości, zobacz Przechowywanie wartości tożsamości podczas zbiorczego, importowanie danych.
**-h"**hint[ ,... n] "
Określa wskazówkę lub wskazówki do wykorzystania podczas zbiorczego importu danych do tabeli lub widoku.ORDER**(column[ASC | DESC] [,...n])**
Porządek sortowania danych w pliku danych.Wydajność importu zbiorczego jest lepsza, jeśli importowane dane są sortowane zgodnie z klastrowym indeksem tablicy, jeśli istnieje.Jeśli plik danych jest posortowany w innym porządku, różnym od porządku klucza indeksu klastrowanego, lub w tabeli nie ma indeksu klastrowanego, klauzula ORDER jest ignorowana.Dostarczone nazwy kolumn muszą być prawidłowymi nazwami kolumn w tabeli docelowej.Domyślnie narzędzie bcp zakłada, że plik danych jest nieposortowany.W celu optymalizacji importu zbiorczego program SQL Server również sprawdza, czy importowane dane są sortowane.Aby uzyskać więcej informacji, zobacz Kontrolowanie porządek sortowania podczas zbiorczego, importowanie danych.
ROWS_PER_BATCH **=**bb
Liczba wierszy danych na partię (jako parametr bb).Używany, jeśli nie określono opcji -b, co powoduje wysyłanie całego pliku danych do serwera jako pojedynczej transakcji.Serwer optymalizuje ładowanie zbiorcze zgodnie z wartością parametru bb.Domyślnie wartość ROWS_PER_BATCH jest nieznana.Aby uzyskać więcej informacji, zobacz Zarządzanie instancje importu zbiorczego.
KILOBYTES_PER_BATCH = cc
Przybliżona liczba kilobajtów danych na partię (jako parametr cc).Domyślnie wartość KILOBYTES_PER_BATCH jest nieznana.Aby uzyskać więcej informacji, zobacz Zarządzanie instancje importu zbiorczego.
TABLOCK
Określa, że blokada masowej aktualizacji na poziomie tabeli jest uzyskiwana na czas trwania operacji ładowania zbiorczego. W przeciwnym razie jest ustawiana blokada na poziomie wiersza.Ta wskazówka znacznie zwiększa wydajność, ponieważ utrzymywanie blokady na czas trwania operacji masowego kopiowania zmniejszenia rywalizację blokad w tabeli.Tabela może być załadowana jednocześnie przez wielu klientów, jeśli nie zawiera indeksów i nie określono opcji TABLOCK.Domyślnie zachowanie blokowania jest określone przez opcję tabeli table lock on bulk load.Aby uzyskać więcej informacji, zobacz Kontrolowanie zachowania blokowania dla importu zbiorczego.
CHECK_CONSTRAINTS
Określa, że wszystkie ograniczenia w tabeli docelowej lub widoku muszą być sprawdzane podczas operacji importu zbiorczego.Bez wskazówki CHECK_CONSTRAINTS wszelkie ograniczenia CHECK i FOREIGN KEY są ignorowane, a po operacji ograniczenie tabeli jest oznaczane jako niezaufane.Ostrzeżenie
Ograniczenia UNIQUE, PRIMARY KEY i NOT NULL są zawsze wymuszane.
W pewnym momencie należy sprawdzić ograniczenia w całej tabeli.Jeśli tabela była niepusta przed operacją importu zbiorczego, koszt ponownego sprawdzenia poprawności ograniczenia może przekroczyć koszt zastosowania ograniczeń CHECK do danych pierwotnych.Firma Microsoft zaleca zatem, aby zwykle włączać sprawdzanie ograniczeń podczas przyrostowego importu zbiorczego.
Sytuacja, w której można wyłączyć ograniczenia (zachowanie domyślne), ma miejsce, jeśli dane wejściowe zawierają wiersze, które naruszają ograniczenia.Jeśli ograniczenia CHECK są wyłączone, można zaimportować dane, a następnie użyć instrukcji języka Transact-SQL, aby usunąć nieprawidłowe dane.
Ostrzeżenie
W narzędziu bcp jest obecnie wymuszane sprawdzanie poprawności danych i kontrola danych, co mogłyby powodować niepowodzenie wykonywania skryptów, jeśli są one wykonywane na nieprawidłowych danych w pliku danych.
Ostrzeżenie
Przełącznik -m max_errors nie ma zastosowania przy kontroli ograniczeń.
Aby uzyskać więcej informacji, zobacz Kontrolowanie, ograniczenie sprawdzania przez operacji importu zbiorczego.
FIRE_TRIGGERS
Określana z argumentem in powoduje, że wszystkie wyzwalacze wstawiania zdefiniowane w tabeli docelowej są wykonywane podczas operacji masowego kopiowania.Jeśli instrukcja FIRE_TRIGGERS nie jest określona, wyzwalacze insert nie są wykonywane.Instrukcja FIRE_TRIGGERS jest ignorowana dla argumentów out, queryout i format.Aby uzyskać więcej informacji, zobacz Sterowanie wykonywaniem wyzwalacza podczas zbiorczego, importowanie danych.
Uwagi
Klient bcp w wersji 10.0 jest instalowany podczas instalacji narzędzi programu Microsoft SQL Server 2008 R2.Jeśli zainstalowane są narzędzia dla wersji SQL Server 2008 R2 i SQL Server 2005, w zależności od wartości zmiennej środowiskowej PATH może być używana starsza wersja klienta bcp zamiast wersji bcp 10.0.Ta zmienna środowiskowa definiuje zestaw katalogów używanych przez system Windows do wyszukiwania plików wykonywalnych.Aby odkryć, której wersji używasz, uruchom narzędzie bcp /v w wierszu polecenia systemu Windows.Aby uzyskać informacje, jak skonfigurować ścieżkę poleceń w zmiennej środowiskowej PATH, zobacz Pomoc systemu Windows.
Pliki w formacie XML są tylko obsługiwane, gdy narzędzia programu SQL Server są instalowane wraz z macierzystym klientem programu SQL Server.
Aby uzyskać informacje, gdzie znaleźć lub jak uruchamiać narzędzie bcp, i informacje o konwencjach składni narzędzi wiersza polecenia, zobacz Narzędzia wiersza polecenia.
Aby uzyskać informacje dotyczące przygotowywania danych do operacji zbiorczego importu lub eksportu, zobacz Przygotowywanie danych luzem wywozu lub przywozu.
Aby uzyskać informacje, kiedy operacje wstawiania wierszy wykonywane przez import zbiorczy są rejestrowane w dzienniku transakcji, zobacz Wymagania wstępne dotyczące minimalnych logowanie importu zbiorczego.
Obsługa macierzystych plików danych
W programie SQL Server 2008 R2 narzędzie bcp obsługuje macierzyste pliki danych zgodne tylko z programami SQL Server 2000, SQL Server 2005, SQL Server 2008 i SQL Server 2008 R2.
Kolumny obliczane i kolumny znaczników czasu
Wartości w pliku danych importowane do kolumn wartości obliczanych i wartości typu timestamp są ignorowane, a program SQL Server automatycznie przypisuje wartości.Jeśli plik danych nie zawiera wartości dla kolumn wartości obliczanych lub wartości typu timestamp w tabeli, aby określić, że kolumny wartości obliczanych lub wartości typu timestamp w tabeli powinny być pominięte podczas importowania danych, należy użyć pliku formatu; program SQL Server automatycznie przypisuje wartości unikatowe dla kolumny.
Kolumny wartości obliczanych i wartości typu timestamp są kopiowane masowo z programu SQL Server do pliku danych w zwykły sposób.
Określanie identyfikatorów, które zawierają spacje lub znaki cudzysłowu
Identyfikatory programu SQL Server mogą zawierać znaki, takie jak wbudowane spacje i znaki cudzysłowu.Takie identyfikatory muszą być traktowane w następujący sposób:
Podczas określania identyfikatora lub nazwy pliku, która zawiera spację lub znak cudzysłowu w wierszu polecenia, identyfikator należy ująć w znaki cudzysłowu ("").
Na przykład, następujące polecenie bcp out tworzy plik danych o nazwie Currency Types.dat:
bcp AdventureWorks2008R2.Sales.Currency out "Currency Types.dat" -T -c
Aby określić nazwę bazy danych, która zawiera spację lub znak cudzysłowu, należy użyć opcji -q.
Dla właściciela, tabeli lub nazwy widoku, które zawierają wbudowane spacje lub znaki cudzysłowu, można:
określić opcję -q, lub
ująć nazwę właściciela, tabeli lub widoku w nawiasy kwadratowe ([]) wewnątrz cudzysłowów.
Sprawdzanie poprawności danych
W narzędziu bcp jest obecnie wymuszane sprawdzanie poprawności danych i kontrola danych, co mogłobo powodować niepowodzenie wykonywania skryptów, jeśli są one wykonywane na nieprawidłowych danych w pliku danych.Na przykład instrukcja bcp teraz weryfikuje, czy:
Macierzyste przedstawienia typów danych float lub real są prawidłowe.
Dane Unicode mają równą długość bajtową.
Formularze nieprawidłowych danych, które w starszych wersjach programu SQL Server mogłyby być importowane zbiorczo, teraz nie będą ładowane. We wcześniejszych wersjach błąd nie był zgłaszany, dopóki klient nie próbował uzyskać dostępu do nieprawidłowych danych.Dodatkowy poziom sprawdzania poprawności minimalizuje nieoczekiwane wyniki podczas wykonywania zapytań po ładowaniu zbiorczym.
Eksportowanie lub importowanie zbiorcze dokumentów SQLXML
Aby wyeksportować lub zaimportować zbiorczo dane SQLXML, użyj jednego z następujących typów danych w pliku formatu.
Typ danych |
Efekt |
---|---|
SQLCHAR lub SQLVARYCHAR |
Dane są przesyłane zgodnie ze stroną kodową klienta lub stroną kodową narzuconą przez sortowanie).Efekt jest taki sam jak określenie przełącznika -c bez określania pliku formatu. |
SQLNCHAR lub SQLNVARCHAR |
Dane są przesyłane w formacie Unicode.Efekt jest taki sam jak określenie przełącznika -w bez określania pliku formatu. |
SQLBINARY lub SQLVARYBIN |
Dane są przesyłane bez żadnej konwersji. |
Uprawnienia
Operacja bcpout wymaga uprawnienia SELECT do tabeli źródła.
Operacja bcpin wymaga co najmniej uprawnienia SELECT/INSERT do tabeli docelowej.Dodatkowo wymagane jest uprawnienie ALTER TABLE, jeśli co najmniej jeden z poniższych warunków jest prawdziwy:
Istnieją ograniczenia i nie określono wskazówki CHECK_CONSTRAINTS.
Ostrzeżenie
Wyłączenie ograniczeń jest zachowaniem domyślnym.W celu jawnego włączenia ograniczeń należy użyć opcji -h ze wskazówką CHECK_CONSTRAINTS.
Istnieją wyzwalacze i nie określono wskazówki FIRE_TRIGGER.
Ostrzeżenie
Domyślnie wyzwalacze nie są uruchamiane.Aby jawnie uruchomić wyzwalacze, należy użyć opcji -h ze wskazówką FIRE_TRIGGER.
Opcja -E umożliwia importowanie wartości tożsamości z pliku danych.
Ostrzeżenie
Wymaganie uprawnienia ALTER TABLE do tabeli docelowej to nowość od wersji SQL Server 2005.Ten nowy wymóg może powodować niepowodzenie wykonywania skryptów narzędzia bcp, które nie wymuszają sprawdzania wyzwalaczy i ograniczeń, jeśli konto użytkownika nie ma uprawnienia ALTER do tabeli docelowej.
Najlepsze praktyki dotyczące trybu znakowego (-c) i trybu macierzystego (-n)
W tej sekcji są zalecenia dotyczące trybu znakowego (-c) i trybu macierzystego (-n).
(Administrator/użytkownik) Jeśli jest to możliwe, należy użyć formatu macierzystego (-n), aby uniknąć problemu separatora.Użyj formatu macierzystego do eksportu i importu za pomocą programu SQL Server.Eksportuj dane z programu SQL Server za pomocą opcji - c lub -w, jeśli dane zostaną zaimportowane do bazy danych innej baza programu SQL Server.
(Administrator) Sprawdź dane, jeśli używasz polecenia BCP OUT.Na przykład, jeśli korzystasz z polecenia BCP OUT, BCP IN i znów BCP OUT, sprawdzaj, czy dane są prawidłowo wyeksportowane, a wartości terminatorów nie są używane jako część niektórych wartości danych.Proszę rozważyć zastąpienie domyślnych terminatorów (przy użyciu opcji -t i -r) losowymi wartościami szesnastkowymi w celu uniknięcia konfliktów między wartościami terminatorów a wartościami danych.
(Użytkownik) Używaj długich i unikatowych terminatorów (dowolnej sekwencję znaków lub bajtów), aby ograniczyć możliwość konfliktu z rzeczywistą wartością ciągu.Można to zrobić, używając opcji -t i -r.
Przykłady
Ta sekcja zawiera następujące przykłady:
A.Kopiowanie wierszy tabeli do pliku danych (za pomocą zaufanego połączenia)
B.Kopiowanie wierszy tabeli do pliku danych (za pomocą uwierzytelniania w trybie mieszanym)
C.Kopiowanie danych z pliku do tabeli
D.Kopiowanie określonej kolumny do pliku danych
E.Kopiowanie określonego wiersza do pliku danych
F.Kopiowanie danych z zapytania do pliku danych
G.Tworzenie pliku w formacie innym niż XML
H.Tworzenie pliku w formacie niż XML
I.Używanie pliku formatu do zbiorczego importu za pomocą narzędzia bcp
A.Kopiowanie wierszy tabeli do pliku danych (za pomocą zaufanego połączenia)
Poniższy przykład ilustruje użycie opcji out wobec tabeli AdventureWorks2008R2.Sales.Currency.W tym przykładzie następuje utworzenie pliku danych o nazwie Currency.dat i skopiowanie danych tabeli do niego przy użyciu formatu znakowego.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia wpisz:
bcp AdventureWorks2008R2.Sales.Currency out Currency.dat -T -c
B.Kopiowanie wierszy tabeli do pliku danych (za pomocą uwierzytelniania w trybie mieszanym)
Poniższy przykład ilustruje użycie opcji out wobec tabeli Sales.Currency.W tym przykładzie następuje utworzenie pliku danych o nazwie Currency.dat i skopiowanie danych tabeli do niego przy użyciu formatu znakowego.
W przykładzie założono, że używasz uwierzytelniania w trybie mieszanym. Użyj przełącznika -U, aby określić swój identyfikator logowania.Również chyba że łączysz się 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.
bcp AdventureWorks2008R2.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>
System będzie monitować o hasło.
C.Kopiowanie danych z pliku do tabeli
Poniższy przykład ilustruje użycie opcji in na pliku utworzonym w poprzednim przykładzie (Currency.dat).Po pierwsze jednak w tym przykładzie jest tworzona pusta kopia tabeli Sales.Currency, Sales.Currency2, do której dane są kopiowane.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
Aby utworzyć pustą tabelę, w edytorze zapytań wprowadź następujące polecenie:
USE AdventureWorks2008R2;
GO
SELECT * INTO AdventureWorks2008R2.Sales.Currency2
FROM AdventureWorks2008R2.Sales.Currency WHERE 1=2
W celu masowego skopiowania danych znakowych do nowej tabeli, czyli zaimportowania danych, wprowadź następujące polecenie w wierszu polecenia:
bcp AdventureWorks2008R2.Sales.Currency2 in Currency.dat -T -c
Aby zweryfikować, czy polecenie zostało pomyślnie wykonane, wyświetl zawartość tabeli w edytorze zapytań i wprowadź:
USE AdventureWorks2008R2;
GO
SELECT * FROM Sales.Currency2;
D.Kopiowanie określonej kolumny do pliku danych
Aby skopiować określoną kolumnę, można użyć opcji queryout.Poniższy przykład kopiuje tylko kolumnę Name tabeli Sales.Currency do pliku danych.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp "SELECT Name FROM AdventureWorks2008R2.Sales.Currency" queryout Currency.Name.dat -T -c
E.Kopiowanie określonego wiersza do pliku danych
Aby skopiować określony wiersz, można użyć opcji queryout.Poniższy przykład kopiuje tylko wiersz dla kontaktu o nazwie Jarrod Rana z tabeli Person.Person do pliku danych (Jarrod Rana.dat).W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp "SELECT * FROM AdventureWorks2008R2.Person.Person WHERE FirstName='Jarrod' AND LastName='Rana' " queryout "Jarrod Rana.dat" -T -c
F.Kopiowanie danych z zapytania do pliku danych
Aby skopiować zestaw wyników z instrukcji języka Transact-SQL do pliku danych, użyj opcji queryout.W następującym przykładzie następuje skopiowanie nazw z tabeli AdventureWorks2008R2.Person.Person, uporządkowanych według nazwisk, a następnie imion, do pliku danych Contacts.txt.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp "SELECT FirstName, LastName FROM AdventureWorks2008R2.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T
G.Tworzenie pliku w formacie innym niż XML
Poniższy przykład tworzy plik formatu innego niż XML o nazwie Currency.fmt dla tabeli Sales.Currency w bazie danych AdventureWorks2008R2.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp AdventureWorks2008R2.Sales.Currency format nul -T -c -f Currency.fmt
Aby uzyskać więcej informacji, zobacz Opis plików w formacie XML programu.
H.Tworzenie pliku w formacie niż XML
Poniższy przykład tworzy plik formatu XML o nazwie Currency.xml dla tabeli Sales.Currency w bazie danych AdventureWorks2008R2.W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp AdventureWorks2008R2.Sales.Currency format nul -T -c -x -f Currency.xml
Ostrzeżenie
Aby użyć przełącznika -x, należy używać klienta bcp w wersji 9.0.Aby uzyskać informacje, jak korzystać z klienta bcp w wersji 9.0, zobacz „Uwagi”.
Aby uzyskać więcej informacji, zobacz Opis plików w formacie XML.
I.Używanie pliku formatu do zbiorczego importu za pomocą narzędzia bcp
Aby użyć wcześniej utworzonego pliku formatu podczas importowania danych do wystąpienia programu SQL Server, użyj przełącznika -f z opcją in.Na przykład, następujące polecenie masowo kopiuje zawartość pliku danych Currency.dat do kopii tabeli Sales.Currency (Sales.Currency2) przy użyciu utworzonego wcześniej pliku formatu (Currency.xml).W przykładzie założono, że używasz uwierzytelniania systemu Windows i masz zaufane połączenie z wystąpieniem serwera, na którym jest uruchomione narzędzie bcp.
W wierszu polecenia systemu Windows wpisz:
bcp AdventureWorks2008R2.Sales.Currency2 in Currency.dat -T -f Currency.xml
Ostrzeżenie
Pliki formatu są przydatne, gdy pola pliku danych są różne od kolumny tabeli; na przykład pod względem liczby, uporządkowania lub typów danych.Aby uzyskać więcej informacji, zobacz Format plików importowanie lub eksportowanie danych.
Dodatkowe przykłady
Poniższe tematy zawierają przykłady użycia narzędzia bcp:
Przykłady luzem, importowanie i eksportowanie dokumentów XML
Przechowywanie wartości tożsamości podczas zbiorczego, importowanie danych
Przechowywanie wartości null lub przy użyciu wartości domyślnych podczas importu zbiorczego
Do importowania lub eksportowania danych przy użyciu formatu znaków
Do importowania lub eksportowania danych przy użyciu formatu macierzystego
Do importowania lub eksportowania danych przy użyciu formatu znaków Unicode
Przy użyciu formatu Unicode macierzystego do importowania lub eksportowania danych
Zobacz także