Masskopiera data med bcp till SQL Server i Linux
gäller för:SQL Server – Linux
Den här artikeln visar hur du använder verktyget bcp för att masskopiera data mellan en instans av SQL Server i Linux och en datafil i ett användardefinieringsformat.
Du kan använda bcp- för att importera ett stort antal rader till SQL Server-tabeller eller för att exportera data från SQL Server-tabeller till datafiler. Förutom när det används med frågealternativet kräver bcp ingen kunskap om Transact-SQL. Kommandoradsverktyget bcp fungerar med Microsoft SQL Server som körs lokalt eller i molnet, i Linux, Windows eller Docker och Azure SQL Database och Azure Synapse Analytics.
Den här artikeln visar hur du:
- Importera data till en tabell med hjälp av kommandot
bcp in
- Exportera data från en tabell med hjälp av kommandot
bcp out
Installera kommandoradsverktygen för SQL Server
bcp ingår i SQL Server-kommandoradsverktygen, som inte installeras automatiskt med SQL Server i Linux. Om du inte redan har installerat SQL Server-kommandoradsverktygen på Linux-datorn måste du installera dem. Om du vill ha mer information om hur du installerar verktygen väljer du din Linux-distribution i följande lista:
Importera data med bcp
I den här självstudien skapar du en exempeldatabas och en tabell på den lokala SQL Server-instansen (localhost
) och använder sedan bcp för att läsa in data i exempeltabellen från en textfil på hårddisken.
Skapa en exempeldatabas och tabell
Vi börjar med att skapa en exempeldatabas med en enkel tabell som används i resten av den här självstudien.
Öppna en kommandoterminal i Linux-rutan.
Kopiera och klistra in följande kommandon i terminalfönstret. Dessa kommandon använder kommandoradsverktyget sqlcmd för att skapa en exempeldatabas (
BcpSampleDB
) och en tabell (TestEmployees
) på den lokala SQL Server-instansen (localhost
). Kom ihåg att ersättausername
och<password>
efter behov innan du kör kommandona.
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
Skapa databasen BcpSampleDB
:
sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"
Skapa tabellen TestEmployees
i databasen 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));"
Skapa källdatafilen
Kopiera och klistra in följande kommando i terminalfönstret. Vi använder det inbyggda kommandot cat
för att skapa en exempelfil med tre poster och sparar filen i din hemkatalog som ~/test_data.txt
. Fälten i posterna avgränsas av ett kommatecken.
cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF
Du kan kontrollera att datafilen har skapats korrekt genom att köra följande kommando i terminalfönstret:
cat ~/test_data.txt
Detta bör visa följande i terminalfönstret:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
Importera data från källdatafilen
Kopiera och klistra in följande kommandon i terminalfönstret. Det här kommandot använder bcp för att ansluta till den lokala SQL Server-instansen (localhost
) och importera data från datafilen (~/test_data.txt
) till tabellen (TestEmployees
) i databasen (BcpSampleDB
). Kom ihåg att ersätta användarnamnet och <password>
efter behov innan du kör kommandona.
bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Här är en kort översikt över de kommandoradsparametrar som vi använde med bcp- i det här exemplet:
-
-S
: anger den instans av SQL Server som du vill ansluta till -
-U
: anger inloggnings-ID:t som används för att ansluta till SQL Server -
-P
: anger lösenordet för inloggnings-ID:t -
-d
: anger databasen som ska anslutas till -
-c
: utför åtgärder med hjälp av en teckendatatyp -
-t
: anger fältavslutaren. Vi användercomma
som fältavgränsare för posterna i vår datafil
Not
Vi anger inte en anpassad radavgränsare i det här exemplet. Rader i textdatafilen avslutades korrekt med newline
när vi använde kommandot cat
för att skapa datafilen tidigare.
Du kan kontrollera att data har importerats genom att köra följande kommando i terminalfönstret. Kom ihåg att ersätta username
och <password>
efter behov innan du kör kommandot.
sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"
Detta bör visa följande resultat:
Id Name Location
----------- ------------------- -------------------
1 Jared Australia
2 Nikita India
3 Tom Germany
Exportera data med bcp
I den här handledningen använder du bcp för att exportera data från den exempeltabell vi skapade tidigare, till en ny datafil.
Kopiera och klistra in följande kommandon i terminalfönstret. Dessa kommandon använder kommandoradsverktyget bcp för att exportera data från tabellen TestEmployees
i databasen BcpSampleDB
till en ny datafil med namnet ~/test_export.txt
. Kom ihåg att ersätta användarnamnet och <password>
efter behov innan du kör kommandot.
bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Du kan kontrollera att data exporterades korrekt genom att köra följande kommando i terminalfönstret:
cat ~/test_export.txt
Detta bör visa följande i terminalfönstret:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany