Gegevens bulksgewijs kopiëren met bcp naar SQL Server in Linux

Van toepassing op:SQL Server op Linux

In dit artikel wordt beschreven hoe u het hulpprogramma bcp gebruikt om gegevens bulksgewijs te kopiëren tussen een exemplaar van SQL Server op Linux en een gegevensbestand in een door de gebruiker opgegeven indeling.

U kunt bcp gebruiken om grote aantallen rijen te importeren in SQL Server tabellen of om gegevens uit SQL Server tabellen te exporteren naar gegevensbestanden. Behalve wanneer bcp wordt gebruikt met de query-outoptie, hoeft u geen kennis te hebben van Transact-SQL. De bcp commandoregeltool werkt met SQL Server die on-premises of in de cloud draait op Linux, Windows of Docker, en met Azure SQL Database en Azure Synapse Analytics.

In dit artikel leest u hoe u het volgende kunt doen:

  • Gegevens importeren in een tabel met behulp van de opdracht bcp in
  • Gegevens uit een tabel exporteren met behulp van de opdracht bcp out

De opdrachtregelprogramma's van SQL Server installeren

bcp maakt deel uit van de SQL Server opdrachtregelprogramma's die niet automatisch worden geïnstalleerd met SQL Server on Linux. Als u de opdrachtregelprogramma's van SQL Server nog niet op uw Linux-computer hebt geïnstalleerd, moet u deze installeren. Selecteer uw Linux-distributie in de volgende lijst voor meer informatie over het installeren van de hulpprogramma's:

Gegevens importeren met bcp

In deze zelfstudie maakt u een voorbeelddatabase en tabel op het lokale SQL Server-exemplaar (localhost) en gebruikt u vervolgens bcp om vanuit een tekstbestand op schijf in de voorbeeldtabel te laden.

Een voorbeelddatabase en -tabel maken

Begin met het maken van een voorbeelddatabase met een eenvoudige tabel die in de rest van deze zelfstudie wordt gebruikt.

  1. Open een opdrachtterminal op uw Linux-computer.

  2. Kopieer en plak de volgende opdrachten in het terminalvenster. Deze commando's gebruiken de sqlcmd-tool om een voorbeelddatabase (BcpSampleDB) en een tabel (TestEmployees) te maken op de lokale SQL Server-instantie (localhost). Vergeet niet om te vervangen sa en <password> indien nodig voordat je de commando's uitvoert.

Uw wachtwoord moet het SQL Server standaardbeleid voor password volgen. Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

Maak de database BcpSampleDB:

sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"

Maak de tabel TestEmployees in de database 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));"

Het brongegevensbestand maken

Kopieer en plak de volgende opdracht in het terminalvenster. Het ingebouwde cat commando maakt een voorbeeld van tekstgegevens aan met drie records en slaat het bestand op in je thuismap als ~/test_data.txt. De velden in de records worden gescheiden door een komma.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

U kunt controleren of het gegevensbestand correct is gemaakt door de volgende opdracht uit te voeren in het terminalvenster:

cat ~/test_data.txt

Hiermee wordt het volgende weergegeven in het terminalvenster:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany

Gegevens importeren uit het brongegevensbestand

Kopieer en plak het volgende commando in het terminalvenster. Met deze opdracht wordt bcp gebruikt om verbinding te maken met het lokale SQL Server-exemplaar (localhost) en de gegevens uit het gegevensbestand (~/test_data.txt) te importeren in de tabel (TestEmployees) in de database (BcpSampleDB). Vergeet niet om te vervangen sa en <password> indien nodig voordat je het commando uitvoert.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

Hier volgt een kort overzicht van de opdrachtregelparameters waarmee we in dit voorbeeld hebben gebruikt bcp :

  • -S: hiermee geeft u het exemplaar van SQL Server op waarmee verbinding moet worden gemaakt
  • -U: geeft de aanmeldings-id op die wordt gebruikt om verbinding te maken met SQL Server
  • -P: hiermee geeft u het wachtwoord voor de aanmeldings-id op
  • -d: hiermee geeft u de database op waarmee verbinding moet worden gemaakt
  • -c: voert bewerkingen uit met behulp van een tekentype
  • -t: geeft de veldafsluiter aan. Dit voorbeeld gebruikt een komma als veldterminator voor de records in het databestand

Note

In dit voorbeeld wordt geen aangepaste rijeindteken opgegeven. Rijen in het tekstbestand zijn correct beëindigd met newline nadat we de opdracht cat hebben gebruikt om het gegevensbestand te maken.

U kunt controleren of de gegevens zijn geïmporteerd door de volgende opdracht uit te voeren in het terminalvenster. Vergeet niet om te vervangen sa en <password> indien nodig voordat je het commando uitvoert.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"

Hiermee worden de volgende resultaten weergegeven:

Id          Name                Location
----------- ------------------- -------------------
          1 Jared               Australia
          2 Nikita              India
          3 Tom                 Germany

Gegevens exporteren met bcp

In deze zelfstudie gebruikt bcp u om gegevens te exporteren uit de voorbeeldtabel die we eerder hebben gemaakt naar een nieuw gegevensbestand.

Kopieer en plak het volgende commando in het terminalvenster. Dit commando gebruikt het bcp commandoregelprogramma om gegevens uit de tabel TestEmployees in de database BcpSampleDB te exporteren naar een nieuw databestand genaamd ~/test_export.txt. Vergeet niet om te vervangen sa en <password> indien nodig voordat je het commando uitvoert.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

U kunt controleren of de gegevens correct zijn geëxporteerd door de volgende opdracht uit te voeren in het terminalvenster:

cat ~/test_export.txt

Hiermee wordt het volgende weergegeven in het terminalvenster:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany