Udostępnij za pośrednictwem


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.

  1. Na komputerze z systemem Linux otwórz terminal.

  2. 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 , aby połączyć się z lokalnym wystąpieniem programu SQL Server () i zaimportować dane z pliku danych () do tabeli () w bazie danych (). Pamiętaj, aby zastąpić nazwę użytkownika i <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żywamy comma 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