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.
Öffnen Sie in Ihrer Linux-Box ein Befehlsterminal.
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 verwendencomma
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 BcpSampleDB
in 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