Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server su Linux
Questo articolo illustra come usare l'utilità bcp per eseguire una copia bulk dei dati tra un'istanza di SQL Server in Linux e un file di dati in un formato specificato dall'utente.
È possibile usare bcp per importare un numero elevato di righe in tabelle SQL Server o per esportare dati da tabelle SQL Server in file di dati. Tranne quando viene usata con l'opzione queryout, bcp non richiede alcuna conoscenza di Transact-SQL. L'utilità bcp da riga di comando funziona con SQL Server che funziona on-premises o nel cloud su Linux, Windows o Docker, e con database SQL di Azure e Azure Synapse Analytics.
Questo articolo illustra come:
- Importare i dati in una tabella usando il comando
bcp in - Esportare i dati da una tabella usando il comando
bcp out
Installare gli strumenti da riga di comando di SQL Server
bcp fa parte degli strumenti da riga di comando SQL Server, che non vengono installati automaticamente con SQL Server in Linux. Se gli strumenti da riga di comando di SQL Server non sono già stati installati nel computer Linux, è necessario installarli. Per altre informazioni su come installare gli strumenti, selezionare la distribuzione di Linux dall'elenco seguente:
Importare i dati con bcp
In questa esercitazione viene creato un database e una tabella di esempio nell'istanza di SQL Server locale (localhost) e quindi si usa bcp per caricare nella tabella di esempio da un file di testo su disco.
Creare un database e una tabella di esempio
Per iniziare, creare un database di esempio con una tabella semplice usata nel resto di questa esercitazione.
Nel computer Linux aprire un terminale di comando.
Copiare e incollare i comandi seguenti nella finestra del terminale. Questi comandi utilizzano l'utilità sqlcmd per creare un database di esempio (
BcpSampleDB) e una tabella (TestEmployees) sull'istanza locale di SQL Server (localhost). Ricordati di sostituiresae<password>quando necessario prima di eseguire i comandi.
La password deve seguire la politica predefinita di SQL Server password. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
Creare il database BcpSampleDB:
sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"
Creare la tabella TestEmployees nel database SQL 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));"
Creare il file di dati di origine
Copiare e incollare il comando seguente nella finestra del terminale. Il comando integrato cat crea un file di dati di testo di esempio con tre record e salva il file nella tua cartella home come ~/test_data.txt. I campi nei record sono delimitati da una virgola.
cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF
È possibile verificare che il file di dati sia stato creato correttamente eseguendo il comando seguente nella finestra del terminale:
cat ~/test_data.txt
Nella finestra del terminale dovrebbe essere visualizzato quanto segue:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
Importa i dati dal file di dati di origine
Copia e incolla il seguente comando nella finestra del terminale. Questo comando usa bcp per connettersi all'istanza SQL Server locale (localhost) e importare i dati dal file di dati (~/test_data.txt) nella tabella (TestEmployees) nel database (BcpSampleDB). Ricorda di sostituire sa e <password> quando necessario prima di eseguire il comando.
bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
Ecco una breve panoramica dei parametri della riga di comando usati in bcp questo esempio:
-
-S: specifica l'istanza di SQL Server alla quale connettersi -
-U: specifica l'ID di accesso usato per connettersi SQL Server -
-P: specifica la password per l'ID di accesso -
-d: specifica il database al quale connettersi -
-c: esegue operazioni utilizzando un tipo di dati di carattere -
-t: specifica il carattere di terminazione del campo. Questo esempio utilizza una virgola come termine di campo per i record nel file dati
Note
In questo esempio non viene specificato un carattere di terminazione della riga personalizzato. Le righe nel file di dati di testo sono state terminate correttamente con newline quando è stato usato il comando cat per creare il file di dati in precedenza.
È possibile verificare che i dati siano stati importati correttamente eseguendo il comando seguente nella finestra del terminale. Ricorda di sostituire sa e <password> quando necessario prima di eseguire il comando.
sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"
Verranno visualizzati i risultati seguenti:
Id Name Location
----------- ------------------- -------------------
1 Jared Australia
2 Nikita India
3 Tom Germany
Esportare i dati con bcp
In questa esercitazione si userà bcp per esportare i dati dalla tabella di esempio creata in precedenza in un nuovo file di dati.
Copia e incolla il seguente comando nella finestra del terminale. Questo comando utilizza l'utilità bcp della riga di comando per esportare i dati dalla tabella TestEmployees nel database BcpSampleDB a un nuovo file di dati chiamato ~/test_export.txt. Ricorda di sostituire sa e <password> quando necessario prima di eseguire il comando.
bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','
È possibile verificare che il file di dati sia stato esportato correttamente eseguendo il comando seguente nella finestra del terminale:
cat ~/test_export.txt
Nella finestra del terminale dovrebbe essere visualizzato quanto segue:
1,Jared,Australia
2,Nikita,India
3,Tom,Germany