Copia bulk di dati con bcp per SQL Server in LinuxBulk copy data with bcp to SQL Server on Linux

QUESTO ARGOMENTO SI APPLICA A: SìSQL Server (solo Linux)nonDatabase SQL di AzurenonAzure SQL Data Warehousenon Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

In questo articolo viene illustrato come utilizzare il bcp utilità della riga di comando di copia bulk dei dati tra un'istanza di SQL Server 2017 su Linux e un file di dati in un formato specificato dall'utente.This article shows how to use the bcp command-line utility to bulk copy data between an instance of SQL Server 2017 on Linux and a data file in a user-specified format.

È possibile utilizzare bcp per importare un numero elevato di righe in tabelle SQL Server oppure per esportare dati dalle tabelle di SQL Server nei file di dati.You can use bcp to import large numbers of rows into SQL Server tables or to export data from SQL Server tables into data files. Tranne quando è usato con l'opzione queryout, bcp non richiede alcuna conoscenza di Transact-SQL.Except when used with the queryout option, bcp requires no knowledge of Transact-SQL. Il bcp utilità della riga di comando funziona con Microsoft SQL Server in esecuzione in locale o nel cloud, Linux, Windows o Docker e Database SQL di Azure e Azure SQL Data Warehouse.The bcp command-line utility works with Microsoft SQL Server running on-premises or in the cloud, on Linux, Windows or Docker and Azure SQL Database and Azure SQL Data Warehouse.

In questo articolo illustra come a:This article shows you how to:

  • Importare dati in una tabella con il bcp in comandoImport data into a table using the bcp in command
  • Esportare i dati da una tabella utilizzando il bcp out comandoExport data from a table using the bcp out command

Installare gli strumenti da riga di comando di SQL ServerInstall the SQL Server command-line tools

bcp fa parte di strumenti della riga di comando di SQL Server, che non vengono installati automaticamente con SQL Server in Linux.bcp is part of the SQL Server command-line tools, which are not installed automatically with SQL Server on Linux. Se non è già installato gli strumenti da riga di comando di SQL Server nel computer Linux, è necessario installarli.If you have not already installed the SQL Server command-line tools on your Linux machine, you must install them. Per ulteriori informazioni su come installare gli strumenti, selezionare la distribuzione di Linux dall'elenco seguente:For more information on how to install the tools, select your Linux distribution from the following list:

Importare i dati con bcpImport data with bcp

In questa esercitazione, si crea un database di esempio e una tabella nell'istanza locale di SQL Server (localhost) e quindi utilizzare bcp per caricare nella tabella di esempio da un file di testo su disco.In this tutorial, you create a sample database and table on the local SQL Server instance (localhost) and then use bcp to load into the sample table from a text file on disk.

Creare un database di esempio e una tabellaCreate a sample database and table

Iniziamo creando un database di esempio con una semplice tabella utilizzato nella parte restante di questa esercitazione.Let's start by creating a sample database with a simple table that is used in the rest of this tutorial.

  1. Nella casella di Linux, aprire un terminale di comando.On your Linux box, open a command terminal.

  2. Copiare e incollare i comandi seguenti nella finestra terminal.Copy and paste the following commands into the terminal window. Questi comandi usano il sqlcmd utilità della riga di comando per creare un database di esempio (BcpSampleDB) e una tabella (TestEmployees) nell'istanza locale di SQL Server (localhost).These commands use the sqlcmd command-line utility to create a sample database (BcpSampleDB) and a table (TestEmployees) on the local SQL Server instance (localhost). Ricordarsi di sostituire il username e <your_password> necessarie prima di eseguire i comandi.Remember to replace the username and <your_password> as necessary before running the commands.

Creare il database BcpSampleDB:Create the database BcpSampleDB:

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

Creare la tabella TestEmployees nel database BcpSampleDB:Create the table TestEmployees in the database 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));"

Creare il file di dati di origineCreate the source data file

Copiare e incollare il comando seguente nella finestra del terminale.Copy and paste the following command into your terminal window. Utilizziamo predefinito cat comando per creare un file di dati di testo di esempio con tre record salvare il file nella directory principale come ~/test_data.txt.We use the built-in cat command to create a sample text data file with three records save the file in your home directory as ~/test_data.txt. I campi nei record sono delimitati da una virgola.The fields in the records are delimited by a comma.

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

È possibile verificare che il file di dati è stato creato correttamente eseguendo il comando seguente nella finestra terminal:You can verify that the data file was created correctly by running the following command in your terminal window:

cat ~/test_data.txt

Nella finestra terminal verrà visualizzato quanto segue:This should display the following in your terminal window:

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

Importare i dati dal file di dati di origineImport data from the source data file

Copiare e incollare i comandi seguenti nella finestra terminal.Copy and paste the following commands into the terminal window. Questo comando Usa bcp per connettersi all'istanza locale di SQL Server (localhost) e importare i dati dal file di dati (~/test_data.txt) nella tabella (TestEmployees) nel database (BcpSampleDB).This command uses bcp to connect to the local SQL Server instance (localhost) and import the data from the data file (~/test_data.txt) into the table (TestEmployees) in the database (BcpSampleDB). Ricordarsi di sostituire il nome utente e <your_password> necessarie prima di eseguire i comandi.Remember to replace the username and <your_password> as necessary before running the commands.

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

Ecco una breve panoramica dei parametri della riga di comando è utilizzati con bcp in questo esempio:Here's a brief overview of the command-line parameters we used with bcp in this example:

  • -S: specifica l'istanza di SQL Server a cui connettersi-S: specifies the instance of SQL Server to which to connect
  • -U: specifica l'ID di accesso utilizzato per connettersi a SQL Server-U: specifies the login ID used to connect to SQL Server
  • -P: specifica la password per l'ID di accesso-P: specifies the password for the login ID
  • -d: Specifica il database a cui connettersi-d: specifies the database to connect to
  • -c: consente di eseguire operazioni utilizzando un tipo di dati carattere-c: performs operations using a character data type
  • -t: Specifica il carattere di terminazione del campo.-t: specifies the field terminator. Si sta usando comma come carattere di terminazione di campo per i record nel file di datiWe are using comma as the field terminator for the records in our data file

Nota

In questo esempio, è non stiamo specificando un terminatore di riga personalizzato.We are not specifying a custom row terminator in this example. Le righe nel file di dati di testo sono state terminate correttamente con newline quando è stato usato il cat comando per creare il file di dati in precedenza.Rows in the text data file were correctly terminated with newline when we used the cat command to create the data file earlier.

È possibile verificare che i dati sono stati importati correttamente eseguendo il comando seguente nella finestra del terminale.You can verify that the data was successfully imported by running the following command in your terminal window. Ricordarsi di sostituire il username e <your_password> necessarie prima di eseguire il comando.Remember to replace the username and <your_password> as necessary before running the command.

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

Verrà visualizzato i risultati seguenti:This should display the following results:

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

(3 rows affected)

Esportare i dati con bcpExport data with bcp

In questa esercitazione è utilizzare bcp per esportare i dati dalla tabella di esempio creato in precedenza in un nuovo file di dati.In this tutorial, you use bcp to export data from the sample table we created earlier to a new data file.

Copiare e incollare i comandi seguenti nella finestra terminal.Copy and paste the following commands into the terminal window. Questi comandi usano il bcp utilità della riga di comando per esportare i dati dalla tabella TestEmployees nel database BcpSampleDB in un nuovo file di dati denominato ~/test_export.txt .These commands use the bcp command-line utility to export data from the table TestEmployees in the database BcpSampleDB to a new data file called ~/test_export.txt. Ricordarsi di sostituire il nome utente e <your_password> necessarie prima di eseguire il comando.Remember to replace the username and <your_password> as necessary before running the command.

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

È possibile verificare che i dati è stati esportati correttamente eseguendo il comando seguente nella finestra terminal:You can verify that the data was exported correctly by running the following command in your terminal window:

cat ~/test_export.txt

Nella finestra terminal verrà visualizzato quanto segue:This should display the following in your terminal window:

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

Vedere ancheSee also