Delen via


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

van toepassing op:SQL Server- - 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 u de query-outoptie gebruikt, is voor bcp- geen kennis van Transact-SQL vereist. Het bcp opdrachtregelprogramma werkt met Microsoft SQL Server die on-premises of in de cloud wordt uitgevoerd, in Linux, Windows of Docker en 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 opdrachtregelprogramma's van SQL Server, die niet automatisch worden geïnstalleerd met SQL Server in 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

Laten we beginnen 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 opdrachten gebruiken het sqlcmd opdrachtregelprogramma om een voorbeelddatabase (BcpSampleDB) en een tabel (TestEmployees) te maken op het lokale SQL Server-exemplaar (localhost). Vergeet niet om de username en <password> indien nodig te vervangen voordat u de opdrachten uitvoert.

Uw wachtwoord moet voldoen aan het standaardbeleid voor SQL Server wachtwoordbeleid. 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. We gebruiken de ingebouwde cat opdracht om een voorbeeldtekstgegevensbestand te maken met drie records het bestand in uw basismap op te slaan 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 de volgende opdrachten 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 de gebruikersnaam en <password> indien nodig te vervangen voordat u de opdrachten 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 die we in dit voorbeeld hebben gebruikt met 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. We gebruiken comma als het veldeindteken voor de records in ons gegevensbestand

Notitie

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 de username en <password> indien nodig te vervangen voordat u de opdracht 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 u bcp- om gegevens te exporteren uit de voorbeeldtabel die we eerder hebben gemaakt naar een nieuw gegevensbestand.

Kopieer en plak de volgende opdrachten in het terminalvenster. Deze opdrachten gebruiken het opdrachtregelprogramma bcp om gegevens uit de tabel te exporteren TestEmployees in de database BcpSampleDB naar een nieuw gegevensbestand met de naam ~/test_export.txt. Vergeet niet om de gebruikersnaam en <password> indien nodig te vervangen voordat u de opdracht 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