Dela via


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.

  1. Öppna en kommandoterminal i Linux-rutan.

  2. 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ätta username 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änder comma 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