Zbiorcze kopiowanie danych za pomocą narzędzia bcp do programu SQL Server w systemie Linux
Dotyczy:programu SQL Server — Linux
W tym artykule pokazano, jak używać narzędzia bcp do zbiorczego kopiowania danych między wystąpieniem programu SQL Server w systemie Linux i plikiem danych w formacie określonym przez użytkownika.
Za pomocą bcp można zaimportować dużą liczbę wierszy do tabel programu SQL Server lub wyeksportować dane z tabel programu SQL Server do plików danych. Z wyjątkiem sytuacji, gdy jest używana z opcją queryout, bcp nie wymaga znajomości języka Transact-SQL. Narzędzie wiersza polecenia bcp współpracuje z programem Microsoft SQL Server działającym lokalnie lub w chmurze, w systemach Linux, Windows lub Docker i Azure SQL Database i Azure Synapse Analytics.
W tym artykule pokazano, jak wykonać następujące działania:
- Importowanie danych do tabeli przy użyciu polecenia
bcp in
- Eksportowanie danych z tabeli przy użyciu polecenia
bcp out
Instalowanie narzędzi wiersza polecenia programu SQL Server
bcp jest częścią narzędzi wiersza polecenia programu SQL Server, które nie są instalowane automatycznie z programem SQL Server w systemie Linux. Jeśli na maszynie z systemem Linux nie zainstalowano jeszcze narzędzi wiersza polecenia programu SQL Server, musisz je zainstalować. Aby uzyskać więcej informacji na temat sposobu instalowania narzędzi, wybierz dystrybucję systemu Linux z poniższej listy:
-
Red Hat Enterprise Linux (RHEL) - ubuntu
-
SUSE Linux Enterprise Server (SLES)
Importowanie danych za pomocą narzędzia bcp
W tym samouczku utworzysz przykładową bazę danych i tabelę w lokalnym wystąpieniu programu SQL Server (localhost
), a następnie użyjesz bcp, aby załadować dane do przykładowej tabeli z pliku tekstowego na dysku.
Tworzenie przykładowej bazy danych i tabeli
Zacznijmy od utworzenia przykładowej bazy danych z prostą tabelą używaną w pozostałej części tego samouczka.
Na komputerze z systemem Linux otwórz terminal.
Skopiuj i wklej następujące polecenia w oknie terminalu. Te polecenia używają narzędzia wiersza polecenia sqlcmd w celu utworzenia przykładowej bazy danych (
BcpSampleDB
) i tabeli (TestEmployees
) w lokalnym wystąpieniu programu SQL Server (localhost
). Pamiętaj, aby zastąpićusername
i<password>
zgodnie z potrzebami przed uruchomieniem poleceń.
Hasło powinno być zgodne z domyślnymi zasadami haseł programu SQL Server. Domyślnie hasło musi mieć długość co najmniej ośmiu znaków i zawierać znaki z trzech z następujących czterech zestawów: wielkie litery, małe litery, cyfry podstawowe-10 i symbole. Hasła mogą mieć długość maksymalnie 128 znaków. Używaj haseł, które są tak długie i złożone, jak to możliwe.
Utwórz bazę danych BcpSampleDB
:
sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"
Utwórz tabelę TestEmployees
w bazie danych BcpSampleDB
:
sqlcmd -S localhost -U sa -P <password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"
Tworzenie pliku danych źródłowych
Skopiuj i wklej następujące polecenie w oknie terminalu. Używamy wbudowanego polecenia cat
, aby utworzyć przykładowy plik danych tekstowych z trzema rekordami zapisującymi plik w katalogu głównym jako ~/test_data.txt
. Pola w rekordach są rozdzielane przecinkami.
cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF
Możesz sprawdzić, czy plik danych został poprawnie utworzony, uruchamiając następujące polecenie w oknie terminalu:
cat ~/test_data.txt
Powinno to zostać wyświetlone w oknie terminalu:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
Importowanie danych ze źródłowego pliku danych
Skopiuj i wklej następujące polecenia w oknie terminalu. To polecenie używa bcp <password>
zgodnie z potrzebami przed uruchomieniem poleceń.
bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Oto krótkie omówienie parametrów wiersza polecenia, które użyliśmy z bcp w tym przypadku:
-
-S
: określa wystąpienie programu SQL Server, z którym należy się połączyć -
-U
: określa identyfikator logowania używany do nawiązywania połączenia z programem SQL Server -
-P
: określa hasło identyfikatora logowania -
-d
: określa bazę danych do nawiązania połączenia z -
-c
: wykonuje operacje przy użyciu typu danych znaków -
-t
: określa terminator pola. Używamycomma
jako terminatora pól dla rekordów w naszym pliku danych
Notatka
W tym przykładzie nie określamy niestandardowego terminatora wierszy. Wcześniej wiersze w pliku danych tekstowych zostały poprawnie zakończone za pomocą newline
, gdy użyliśmy polecenia cat
do utworzenia pliku danych.
Możesz sprawdzić, czy dane zostały pomyślnie zaimportowane, uruchamiając następujące polecenie w oknie terminalu. Pamiętaj, aby zastąpić username
i <password>
zgodnie z potrzebami przed uruchomieniem polecenia .
sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"
Powinno to wyświetlić następujące wyniki:
Id Name Location
----------- ------------------- -------------------
1 Jared Australia
2 Nikita India
3 Tom Germany
Eksportowanie danych za pomocą narzędzia bcp
W tym samouczku użyjesz bcp do wyeksportowania danych z przykładowej tabeli utworzonej wcześniej do nowego pliku danych.
Skopiuj i wklej następujące polecenia w oknie terminalu. Te polecenia używają narzędzia wiersza polecenia bcp do eksportowania danych z tabeli TestEmployees
w bazie danych BcpSampleDB
do nowego pliku danych o nazwie ~/test_export.txt
. Pamiętaj, aby zastąpić nazwę użytkownika i <password>
zgodnie z potrzebami przed uruchomieniem polecenia.
bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Możesz sprawdzić, czy dane zostały prawidłowo wyeksportowane, uruchamiając następujące polecenie w oknie terminalu:
cat ~/test_export.txt
Powinno to zostać wyświetlone w oknie terminalu:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany