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

Gilt für:SQL Server unter 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 bcp verwenden, um große Zeilenzahlen in SQL Server Tabellen zu importieren oder Daten aus SQL Server Tabellen in Datendateien zu exportieren. Mit Ausnahme der Abfrageoption erfordert bcp keine Kenntnisse über Transact-SQL. Das bcp Kommandozeilenprogramm arbeitet mit SQL Server, der lokal oder in der Cloud unter Linux, Windows oder Docker läuft, sowie mit Azure SQL-Datenbank und Azure Synapse Analytics.

Dieser Artikel zeigt Ihnen, wie das geht:

  • Daten mithilfe des Befehls bcp in in eine Tabelle importieren
  • 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 Lernprogramm erstellen Sie eine Beispieldatenbank und -tabelle in der lokalen SQL Server Instanz (localhost) und verwenden dann bcp, um aus einer Textdatei auf dem Datenträger in die Beispieltabelle zu laden.

Erstellen einer Beispieldatenbank und -tabelle

Erstellen Sie zunächst eine Beispieldatenbank mit einer einfachen Tabelle, die im restlichen Lernprogramm 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 verwenden das sqlcmd-Dienstprogramm, um eine Beispieldatenbank (BcpSampleDB) und eine Tabelle (TestEmployees) auf der lokalen SQL Server-Instanz (localhost) zu erstellen. Denken Sie daran, <password> und sa bei Bedarf zu ersetzen, bevor Sie die Befehle ausführen.

Ihr Kennwort sollte der standardmäßigen Kennwortrichtlinie von SQL Server folgen. Standardmäßig muss das Kennwort mindestens acht Zeichen lang sein und Zeichen aus drei der folgenden vier Sätze enthalten: Großbuchstaben, Kleinbuchstaben, Basis-10 Ziffern und Symbole. Kennwörter können bis zu 128 Zeichen lang sein. Verwenden Sie möglichst lange und komplexe Kennwörter.

Erstellen Sie die Datenbank BcpSampleDB:

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

Erstellen Sie die Tabelle TestEmployees in einer SQL-Datenbank 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));"

Erstellen der Quelldatendatei

Kopieren Sie den folgenden Befehl, und fügen Sie ihn in das Terminalfenster ein. Der eingebaute cat Befehl erstellt eine Beispiel-Textdatei mit drei Datensätzen und speichert die Datei in deinem Home-Verzeichnis 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 und fügen Sie den folgenden Befehl in das Terminalfenster ein. Dieser Befehl verwendet bcp, um eine Verbindung mit der lokalen SQL Server Instanz (localhost) herzustellen und die Daten aus der Datendatei (~/test_data.txt) in die Tabelle (TestEmployees) in der Datenbank (BcpSampleDB) zu importieren. Denk daran, <password> und sa bei Bedarf zu ersetzen, bevor du den Befehl ausführst.

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

Hier ist eine kurze Übersicht über die Befehlszeilenparameter, die wir in diesem Beispiel mit bcp verwendet haben.

  • -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. Dieses Beispiel verwendet ein Komma als Feldterminator für die Datensätze in der Datendatei

Note

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. Denk daran, <password> und sa vor dem Ausführen des Befehls nach Bedarf zu ersetzen.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <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 Lernprogramm verwenden Sie bcp, um Daten aus der zuvor erstellten Beispieltabelle in eine neue Datendatei zu exportieren.

Kopieren und fügen Sie den folgenden Befehl in das Terminalfenster ein. Dieser Befehl verwendet das bcp Kommandozeilenprogramm, um Daten aus der Tabelle TestEmployees in der Datenbank BcpSampleDB in eine neue Datendatei namens ~/test_export.txt zu exportieren. Denk daran, <password> und sa vor dem Ausführen des Befehls nach Bedarf zu ersetzen.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <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