Caricare i 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 dipenderà dalla connessione di rete per il data center di Azure.The exact amount of data that is recommended to load/extract via bcp will depend on you network connection to the Azure data center. In genere, le tabelle delle dimensioni possono essere caricate ed estratte facilmente con bcp, tuttavia bcp non è consigliato per il caricamento o l'estrazione di grandi volumi di dati.Generally, dimension tables can be loaded and extracted readily with bcp, however, bcp is not recommended for loading or extracting large volumes of data. Lo strumento consigliato per il caricamento e l'estrazione di grandi volumi di dati è Polybase, perché offre risultati migliori con l'architettura MPP (Massively Parallel Processing, elaborazione parallela massiva) di SQL Data Warehouse.Polybase is the recommended tool for loading and extracting large volumes of data as it does a better job leveraging the massively parallel processing architecture of SQL Data Warehouse.

Con bcp è possibile:With bcp you can:

  • Utilizzare una semplice utilità della riga di comando per caricare dati nell’SQL Data Warehouse.Use a simple command-line utility to load data into SQL Data Warehouse.
  • Utilizzare una semplice utilità della riga di comando per estrarre dati dall’SQL Data Warehouse.Use a simple command-line utility to extract data from SQL Data Warehouse.

In questa esercitazione verranno illustrate le attività seguenti:This tutorial will show you how to:

  • Importare dati in una tabella tramite l'utilità bcp nel comandoImport data into a table using the bcp in command
  • Esportare dati da una tabella tramite l'utilità bcp dal comandoExport data from a table uisng 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 installataThe bcp command line utility installed
  • Utilità della riga di comando SQLCMD installataThe SQLCMD command line utility installed

Nota

È possibile scaricare le utilità bcp e sqlcmd dall'Area download Microsoft.You can download the bcp and sqlcmd utilities from the Microsoft Download Center.

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
    );
"

Nota

Per altre informazioni sulla creazione di una tabella in SQL Data Warehouse e sulle opzioni disponibili con la clausola WITH, vedere Panoramica delle tabelle o la sintassi di CREATE TABLE.See Table Overview or CREATE TABLE syntax for more information about creating a table on SQL Data Warehouse and the options available in the WITH clause.

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. Usare i file ASCII o con codifica UTF-16 quando si usa bcp.exe.Please 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;"

Dovrebbero essere visualizzati i risultati seguenti:This 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

SQL Data Warehouse di Azure non supporta ancora le statistiche di creazione automatica o aggiornamento automatico.Azure SQL Data Warehouse does not yet support auto create or auto update statistics. Per ottenere le migliori prestazioni dalle query, è importante creare statistiche per tutte le colonne di tutte le tabelle dopo il primo caricamento o dopo eventuali modifiche sostanziali dei dati.In order to get the best performance from your queries, it's important that statistics be created on all columns of all tables after the first load or any substantial changes occur in the data. Per una spiegazione dettagliata delle statistiche, vedere l'argomento Statistiche nel gruppo di argomenti sullo sviluppo.For a detailed explanation of statistics, see the Statistics topic in the Develop group of topics. Di seguito è possibile vedere un rapido esempio di come creare statistiche nella tabella caricata in questo esempio.Below is a quick example of how to create statistics on the tabled loaded in this example

Da un prompt di sqlcmd, eseguire le istruzioni CREATE STATISTICS seguenti:Execute the following CREATE STATISTICS statements from a sqlcmd prompt:

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

In questa esercitazione verrà creato un file di dati da una tabella in SQL Data Warehouse.In this tutorial, you will create a data file from a table in SQL Data Warehouse. I dati creati in precedenza verranno esportati in un nuovo file denominato DimDate2_export.txt.We will export the data we created above to a new data 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 del file devono corrispondere al testo seguente:The data in the file should match the text below:

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 una panoramica sul caricamento, vedere Caricare i dati in SQL Data Warehouse.For an overview of loading, see Load data into SQL Data Warehouse. Per altri suggerimenti sullo sviluppo, vedere Panoramica sullo sviluppo per SQL Data Warehouse.For more development tips, see SQL Data Warehouse development overview.