Freigeben über


Massenkopieren von Daten mit BCP in SQL Server für Linux

Gilt für: SQL Server – Linux

In diesem Artikel wird beschrieben, wie Sie das bcp-Hilfsprogramm zum Massenkopieren von Daten zwischen einer Instanz von SQL Server für Linux und einer Datendatei in einem benutzerdefinierten Format verwenden.

Sie können mit bcp große Mengen neuer Zeilen in SQL Server-Tabellen importieren oder Daten aus SQL Server-Tabellen in Datendateien exportieren. bcp erfordert außer bei Verwendung mit der queryout-Option keine Kenntnisse von Transact-SQL. Das bcp-Hilfsprogramm kann in Microsoft SQL Server lokal ausgeführt werden oder in der Cloud, unter Linux, Windows oder Docker sowie SQL-Datenbank und Azure Synapse Analytics.

In diesem Artikel lernen Sie Folgendes:

  • Importieren von Daten in eine Tabelle mithilfe des bcp in
  • Exportieren von Daten aus einer Tabelle mithilfe des bcp out-Befehls

Installieren der SQL Server-Befehlszeilentools

bcp ist Teil der SQL Server-Befehlszeilentools, die nicht automatisch mit SQL Server für Linux installiert werden. Wenn Sie die SQL Server-Befehlszeilentools nicht bereits auf Ihrem Linux-Computer installiert haben, müssen Sie sie installieren. Um weitere Informationen zum Installieren der Tools zu erhalten, wählen Sie Ihre Linux-Distribution in der folgenden Liste aus:

Importieren von Daten mit BCP

In diesem Tutorial erstellen Sie eine Beispieldatenbank und eine Tabelle auf der lokalen SQL Server-Instanz (localhost) und laden dann mit bcp eine Textdatei auf dem Datenträger in die Beispieltabelle.

Erstellen einer Beispieldatenbank und -tabelle

Zunächst erstellen wir eine Beispieldatenbank mit einer einfachen Tabelle, die im restlichen Tutorial verwendet wird.

  1. Öffnen Sie in Ihrer Linux-Box ein Befehlsterminal.

  2. Kopieren Sie die folgenden Befehle, und fügen Sie sie in das Terminalfenster ein. Diese Befehle erstellen mit dem sqlcmd-Hilfsprogramm eine Beispieldatenbank (BcpSampleDB) und eine Tabelle (TestEmployees) auf der lokalen SQL Server-Instanz (localhost). Denken Sie daran, username und <your_password> vor dem Ausführen der Befehle nach Bedarf zu ersetzen.

Erstellen Sie die Datenbank BcpSampleDB:

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

Erstellen Sie die Tabelle TestEmployees in einer SQL-Datenbank BcpSampleDB:

sqlcmd -S localhost -U sa -P <your_password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"

Erstellen der Quelldatendatei

Kopieren Sie den folgenden Befehl, und fügen Sie ihn in das Terminalfenster ein. Wir erstellen mit dem integrierten cat-Befehl eine Beispiel-Textdatendatei mit drei Datensätzen. Speichern Sie die Datei in Ihrem Basisverzeichnis als ~/test_data.txt. Die Felder in den Datensätzen werden durch Kommas getrennt.

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

Sie können überprüfen, ob die Datendatei ordnungsgemäß erstellt wurde, indem Sie den folgenden Befehl im Terminalfenster ausführen:

cat ~/test_data.txt

Im Terminalfenster sollte Folgendes angezeigt werden:

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

Importieren von Daten aus der Quelldatendatei

Kopieren Sie die folgenden Befehle, und fügen Sie sie in das Terminalfenster ein. Dieser Befehl stellt mit bcp eine Verbindung mit der lokalen SQL Server-Instanz (localhost) her und importiert die Daten aus der Datendatei (~/test_data.txt) in die Tabelle (TestEmployees) in der Datenbank (BcpSampleDB). Denken Sie daran, den Benutzernamen und <your_password> vor dem Ausführen der Befehle nach Bedarf zu ersetzen.

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

Im Folgenden finden Sie eine kurze Übersicht über die Befehlszeilenparameter, die in diesem Beispiel mit bcp verwendet wurden:

  • -S: Gibt die SQL Server-Instanz an, mit der eine Verbindung hergestellt werden soll.
  • -U: Gibt die Anmelde-ID an, die zum Herstellen einer Verbindung mit SQL Server verwendet wird.
  • -P: Gibt das Kennwort für die Anmelde-ID an.
  • -d: Gibt die Datenbank an, mit der eine Verbindung hergestellt werden soll.
  • -c: Führt die Vorgänge mithilfe eines Zeichendatentyps aus.
  • -t: Gibt das Feldabschlusszeichen an. Wir verwenden comma als Feldabschlusszeichen für die Datensätze in der Datendatei.

Hinweis

In diesem Beispiel wird kein benutzerdefiniertes Zeilenabschlusszeichen angegeben. Die Zeilen in der Textdatendatei wurden mit newline ordnungsgemäß beendet, als zuvor der cat-Befehl zum Erstellen der Datendatei verwendet wurde.

Sie können überprüfen, ob die Daten ordnungsgemäß importiert wurden, indem Sie den folgenden Befehl im Terminalfenster ausführen. Denken Sie daran, username und <your_password> vor dem Ausführen des Befehls nach Bedarf zu ersetzen.

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

Daraufhin sollten folgende Ergebnisse angezeigt werden:

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

Exportieren von Daten mit BCP

In diesem Tutorial verwenden Sie bcp, um Daten aus der zuvor erstellten Beispieltabelle in eine neue Datendatei zu exportieren.

Kopieren Sie die folgenden Befehle, und fügen Sie sie in das Terminalfenster ein. Diese Befehle exportieren mit dem bcp–Befehlszeilen-Hilfsprogramm Daten aus der Tabelle TestEmployees in der Datenbank BcpSampleDBin eine neue Datendatei mit dem Namen ~/test_export.txt. Denken Sie daran, den Benutzernamen und <your_password> vor dem Ausführen des Befehls nach Bedarf zu ersetzen.

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

Sie können überprüfen, ob die Daten ordnungsgemäß exportiert wurden, indem Sie den folgenden Befehl im Terminalfenster ausführen:

cat ~/test_export.txt

Im Terminalfenster sollte Folgendes angezeigt werden:

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