Caricare dati con bcpLoad data with bcp

bcp è un'utilità di caricamento bulk da riga di comando che permette di copiare dati tra SQL Server, file di dati e SQL Data Warehouse.bcp is a command-line bulk load utility that allows you to copy data between SQL Server, data files, and SQL Data Warehouse. Usare bcp per importare numeri elevati di righe nelle tabelle di SQL Data Warehouse o per esportare i dati dalle tabelle di SQL Server ai file di dati.Use bcp to import large numbers of rows into SQL Data Warehouse tables or to export data from SQL Server tables into data files. bcp richiede competenze in ambito di Transact-SQL solo quando viene usato con l'opzione queryout.Except when used with the queryout option, bcp requires no knowledge of Transact-SQL.

bcp costituisce un modo semplice e rapido per spostare set di dati di dimensioni ridotte da e verso un database di SQL Data Warehouse.bcp is a quick and easy way to move smaller data sets into and out of a SQL Data Warehouse database. La quantità esatta di dati che è consigliabile caricare/estrarre tramite bcp dipende dalla connessione di rete ad Azure.The exact amount of data that is recommended to load/extract via bcp depends on the network connection to Azure. Piccole tabelle delle dimensioni possono essere caricate ed estratte facilmente con bcp.Small dimension tables can be loaded and extracted readily with bcp. Per il caricamento e l'estrazione di grandi volumi di dati, invece, lo strumento consigliato è Polybase, non bcp.However, Polybase, not bcp, is the recommended tool for loading and extracting large volumes of data. PolyBase è progettato per l'architettura di elaborazione parallela massiva (MPP, Massively Parallel Processing) di SQL Data Warehouse.PolyBase is designed for the massively parallel processing architecture of SQL Data Warehouse.

Con bcp è possibile:With bcp you can:

  • Usare un'utilità della riga di comando per caricare dati in SQL Data Warehouse.Use a command-line utility to load data into SQL Data Warehouse.
  • Usare un'utilità della riga di comando per estrarre dati da SQL Data Warehouse.Use a command-line utility to extract data from SQL Data Warehouse.

Questa esercitazione:This tutorial:

  • Importa dati in una tabella con il comando in di bcpImports data into a table using the bcp in command
  • Esporta dati da una tabella con il comando out di bcpExports data from a table using the bcp out command

PrerequisitiPrerequisites

Per eseguire questa esercitazione, è necessario:To step through this tutorial, you need:

  • Un database di SQL Data WarehouseA SQL Data Warehouse database
  • Utilità della riga di comando bcp e sqlcmd,bcp and sqlcmd command-line utilities. scaricabili dall'Area download MicrosoftYou can download these from the Microsoft Download Center.

Dati in formato ASCII o UTF-16Data in ASCII or UTF-16 format

Se si prova a eseguire questa esercitazione con dati personalizzati, è necessario che i dati usino la codifica ASCII o UTF-16, perché bcp non supporta UTF-8.If you are trying this tutorial with your own data, your data needs to use the ASCII or UTF-16 encoding since bcp does not support UTF-8.

PolyBase supporta UTF-8 ma non supporta ancora UTF-16.PolyBase supports UTF-8 but doesn't yet support UTF-16. Per usare bcp per l'esportazione e quindi PolyBase per il caricamento di dati, è necessario trasformare i dati in UTF-8 dopo che sono stati esportati da SQL Server.To use bcp for data export and then PolyBase for data loading, you need to transform the data to UTF-8 after it is exported from SQL Server.

Importare i dati in SQL Data WarehouseImport data into SQL Data Warehouse

In questa esercitazione verrà creata una tabella in Azure SQL Data Warehouse e verranno importati dati nella tabella.In this tutorial, you will create a table in Azure SQL Data Warehouse and import data into the table.

Passaggio 1: Creare una tabella in Azure SQL Data WarehouseStep 1: Create a table in Azure SQL Data Warehouse

Al prompt dei comandi usare sqlcmd per eseguire la query seguente per creare una tabella nell'istanza:From a command prompt, use sqlcmd to run the following query to create a table on your instance:

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "
    CREATE TABLE DimDate2
    (
        DateId INT NOT NULL,
        CalendarQuarter TINYINT NOT NULL,
        FiscalQuarter TINYINT NOT NULL
    )
    WITH
    (
        CLUSTERED COLUMNSTORE INDEX,
        DISTRIBUTION = ROUND_ROBIN
    );
"

Per altre informazioni sulla creazione di una tabella, vedere la panoramica delle tabelle o la sintassi di CREATE TABLE.For more information about creating a table, see Table Overview or the CREATE TABLE syntax.

Passaggio 2: Creare un file di dati di origineStep 2: Create a source data file

Aprire il Blocco note, copiare le righe di dati seguenti in un nuovo file di testo e quindi salvare il file nella directory temporanea locale, C:\Temp\DimDate2.txt.Open Notepad and copy the following lines of data into a new text file and then save this file to your local temp directory, C:\Temp\DimDate2.txt.

20150301,1,3
20150501,2,4
20151001,4,2
20150201,1,3
20151201,4,2
20150801,3,1
20150601,2,4
20151101,4,2
20150401,2,4
20150701,3,1
20150901,3,1
20150101,1,3

Nota

È importante ricordare che bcp.exe non supporta la codifica UTF-8 del file.It is important to remember that bcp.exe does not support the UTF-8 file encoding. Quando si usa bcp.exe, usare file ASCII o con codifica UTF-16.Use ASCII files or UTF-16 encoded files when using bcp.exe.

Passaggio 3: Connettersi e importare i datiStep 3: Connect and import the data

bcp permette di connettersi e importare i dati usando il comando seguente, sostituendo i valori in base alla necessità:Using bcp, you can connect and import the data using the following command replacing the values as appropriate:

bcp DimDate2 in C:\Temp\DimDate2.txt -S <Server Name> -d <Database Name> -U <Username> -P <password> -q -c -t  ','

È possibile verificare che i dati siano stati caricati eseguendo la query seguente con sqlcmd:You can verify the data was loaded by running the following query using sqlcmd:

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "SELECT * FROM DimDate2 ORDER BY 1;"

La query restituirà i risultati seguenti:The query should return the following results:

DateIdDateId CalendarQuarterCalendarQuarter FiscalQuarterFiscalQuarter
2015010120150101 11 33
2015020120150201 11 33
2015030120150301 11 33
2015040120150401 22 44
2015050120150501 22 44
2015060120150601 22 44
2015070120150701 33 11
2015080120150801 33 11
2015080120150801 33 11
2015100120151001 44 22
2015110120151101 44 22
2015120120151201 44 22

Passaggio 4: creare le statistiche sui dati appena caricatiStep 4: Create Statistics on your newly loaded data

Dopo il caricamento dei dati, un passaggio finale consiste nel creare o aggiornare le statistiche.After loading data, a final step is to create or update statistics. Questo consente di migliorare le prestazioni delle query.This helps to improve query performance. Per altre informazioni, vedere l'articolo relativo alle statistiche.For more information, see Statistics. L'esempio di sqlcmd seguente crea statistiche sulla tabella contenente i dati appena caricati.The following sqlcmd example creates statistics on the table that contains the newly loaded data.

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "
    create statistics [DateId] on [DimDate2] ([DateId]);
    create statistics [CalendarQuarter] on [DimDate2] ([CalendarQuarter]);
    create statistics [FiscalQuarter] on [DimDate2] ([FiscalQuarter]);
"

Esportare i dati da SQL Data WarehouseExport data from SQL Data Warehouse

Questa esercitazione crea un file di dati da una tabella in SQL Data Warehouse.This tutorial creates a data file from a table in SQL Data Warehouse. I dati importati nella sezione precedente vengono esportatiIt exports the data you imported in the previous section. e i risultati vengono inseriti in un file denominato DimDate2_export.txt.The results go to a file called DimDate2_export.txt.

Passaggio 1: Esportare i datiStep 1: Export the data

L'utilità bcp permette di connettersi ed esportare i dati usando il comando seguente, sostituendo i valori in base alla necessità:Using the bcp utility, you can connect and export data using the following command replacing the values as appropriate:

bcp DimDate2 out C:\Temp\DimDate2_export.txt -S <Server Name> -d <Database Name> -U <Username> -P <password> -q -c -t ','

Per verificare che i dati siano stati esportati correttamente, aprire il nuovo file.You can verify the data was exported correctly by opening the new file. I dati nel file dovrebbero corrispondere al testo seguente:The data in the file should match the following text:

20150301,1,3
20150501,2,4
20151001,4,2
20150201,1,3
20151201,4,2
20150801,3,1
20150601,2,4
20151101,4,2
20150401,2,4
20150701,3,1
20150901,3,1
20150101,1,3

Nota

A causa della natura dei sistemi distribuiti, è possibile che l'ordine dei dati non sia uguale nei database di SQL Data Warehouse.Due to the nature of distributed systems, the data order may not be the same across SQL Data Warehouse databases. Un'altra opzione consiste nell'usare la funzione queryout di bcp per scrivere un estratto di query invece di esportare l'intera tabella.Another option is to use the queryout function of bcp to write a query extract rather than export the entire table.

Passaggi successiviNext steps

Per progettare il processo di caricamento, vedere la [panoramica del caricamento](sql-data-warehouse-design-elt-data-loading].To design your loading process, see the [Loading overview](sql-data-warehouse-design-elt-data-loading].