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:✅ Magazzino di dati in Microsoft Fabric
L'API BCP fornisce un percorso di inserimento diretto sul lato client per caricare i dati in Warehouse senza file di staging nell'archiviazione esterna.
Important
Questa funzionalità si trova in Anteprima.
Lo strumento BCP (utilità bcp),la classe .NET SqlBulkCopye la classe Java SQLServerBulkCopy vengono definiti metodi di inserimento usati in SQL Server, Azure SQL e Azure Synapse carichi di lavoro del pool SQL dedicato. Queste interfacce usano l'API BCP e il protocollo di caricamento bulk TDS, che in genere sono più efficienti delle istruzioni INSERT eseguite riga per riga per l'acquisizione di grandi volumi di dati.
Important
Per la massima velocità effettiva di acquisizione negli scenari di produzione in cui è possibile preparare temporaneamente i file, utilizzare COPY INTO.
Usare l'API BCP quando i dati sono già presenti nel livello client o dell'applicazione ed è necessario inserire direttamente nelle tabelle del warehouse tramite una connessione SQL.
Quando usare l'API BCP
Usare l'API BCP per scenari di inserimento diretto, ad esempio:
- Servizi dell'applicazione che mantengono i dati in memoria e scrivono in batch.
- Script operativi e runbook che caricano i file tramite l'automazione della riga di comando.
- Strumenti di integrazione dei dati che utilizzano la semantica di copia in blocco di SQL.
- Strumenti client o integrazioni esistenti che utilizzano già la semantica dell'API BCP e che non possono essere ristrutturati secondo un pattern di staging
COPY INTO. - Carichi di lavoro di micro-batch in cui i client inviano frequentemente piccoli batch direttamente tramite la connessione SQL del warehouse.
Prerequisites
- Usare l'autenticazione Microsoft Entra ID. L'autenticazione SQL (nome utente e password) non è supportata in Warehouse.
Opzione 1: Usare bcp.exe per l'inserimento basato su script
Usa l'utilità bcp quando è necessaria un'acquisizione ripetibile da riga di comando da script, processi pianificati o runbook. Questa opzione è ideale per le importazioni basate su file in cui si vuole un controllo esplicito sui delimitatori, la codifica, le dimensioni del batch e l'output degli errori.
Questa opzione è consigliata anche quando i file di origine sono stati creati da bcp ... out SQL Server, Azure SQL o endpoint SQL simili e si vogliono mantenere convenzioni di file di copia bulk compatibili.
Flusso tipico:
- Preparare una tabella di destinazione nel magazzino.
- Preparare un file di origine (ad esempio CSV) con ordine di colonna corrispondente alla destinazione o usare un file di formato.
- Esegui
bcp ... incon l'endpoint SQL e il database del warehouse. - Regola opzioni come la dimensione del batch e i delimitatori in base alle dimensioni e al formato del file.
Esempio:
bcp dbo.Sales in sales.csv -S <workspace-endpoint> -d <database> -G -U <user@domain.com> -c -t ,
Opzioni utili dalla documentazione di bcp:
-
-Simposta l'endpoint SQL o la stringa di connessione del warehouse. -
-dimposta il database di destinazione. -
-Gusa l'autenticazione Microsoft Entra. Questa è l'unica opzione di autenticazione supportata per questo scenario di anteprima. -
-Uspecifica il nome dell'entità utente Microsoft Entra per i modelli di accesso interattivi. -
-cusa il formato dati carattere. -
-timposta il carattere di terminazione del campo (,in questo esempio). -
-bpuò impostare le dimensioni del batch per carichi di grandi dimensioni.
Per la sintassi completa e le opzioni specifiche della piattaforma, vedere Copia bulk con l'utilità bcp.
Opzione 2: Usare C# SqlBulkCopy
Usare Microsoft. Data.SqlClient.SqlBulkCopy per .NET servizi e applicazioni che contengono già dati in memoria (ad esempio, DataTable o DbDataReader).
SqlBulkCopy trasmette le righe in modo efficiente a una tabella di destinazione tramite una connessione SQL. È una scelta migliore rispetto all'emissione di molte singole INSERT istruzioni.
Flusso tipico:
- Apri una connessione SQL con la stringa di connessione del data warehouse utilizzando l'autenticazione Microsoft Entra.
- Creare un'istanza
SqlBulkCopye impostareDestinationTableName. - (Facoltativo) Aggiungere mappature delle colonne se i nomi o l'ordine delle colonne di origine e di destinazione sono diversi.
- Impostare le proprietà correlate alle prestazioni,
BatchSizead esempio eBulkCopyTimeout. - Chiamare
WriteToServeroWriteToServerAsyncper caricare il batch.
Esempio:
using Microsoft.Data.SqlClient;
using var connection = new SqlConnection(connectionString);
await connection.OpenAsync();
using var bulk = new SqlBulkCopy(connection);
bulk.DestinationTableName = "dbo.Sales";
await bulk.WriteToServerAsync(dataTable);
Le opzioni di ottimizzazione comuni includono BatchSize, BulkCopyTimeout e mapping di colonne espliciti nei casi in cui gli schemi di origine e di destinazione differiscono.
Opzione 3: Usare Java SQLServerBulkCopy
Usare SQLServerBulkCopy nei servizi Java che inseriscono dati da origini JDBC o flussi di dati in memoria. Fornisce un comportamento di caricamento bulk simile a bcp.exe, ma direttamente nel codice dell'applicazione.
Flusso tipico:
- Aprire una connessione JDBC con il warehouse stringa di connessione usando l'autenticazione Microsoft Entra.
- Creare un'istanza
SQLServerBulkCopye impostaresetDestinationTableName. - (Facoltativo) Configurare
SQLServerBulkCopyOptionse le mappature delle colonne. - Specificare i dati di origine come
ResultSet,RowSetoISQLServerBulkRecord. - Chiamare
writeToServerper inserire i dati.
Esempio:
try (SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(connectionString)) {
bulkCopy.setDestinationTableName("dbo.Sales");
bulkCopy.writeToServer(resultSet);
}
L'API JDBC per la copia in blocco supporta la scrittura a partire dalle origini dati ResultSet, RowSet e ISQLServerBulkRecord.
Osservazioni sul supporto delle opzioni di copia bulk
Questa sezione illustra il comportamento delle opzioni comuni di copia bulk in Fabric Data Warehouse. I nomi delle opzioni corrispondono alle impostazioni in .NET SqlBulkCopyOptions, Java SQLServerBulkCopyOptions e ai relativi hint per il caricamento bulk di bcp.
Opzioni non applicabili
Le API client più comuni accettano le opzioni seguenti, ma la copia in blocco in Fabric Data Warehouse le ignora e usa il comportamento predefinito del servizio:
CheckConstraintsTableLockKeepNullsFireTriggers
Considerazioni sulle prestazioni
Le prestazioni di copia bulk dipendono principalmente dal dimensionamento batch e dalla qualità della rete di caricamento client.
Dimensioni dei batch
Le dimensioni del batch hanno un impatto significativo sulla velocità effettiva. Ogni batch ha un sovraccarico di elaborazione fisso, quindi l'invio di batch molto piccoli (ad esempio, decine o centinaia di righe) può ridurre significativamente le prestazioni durante il caricamento di set di dati di grandi dimensioni.
Per carichi più grandi, usare batch di dimensioni maggiori. Un obiettivo pratico è da circa 150 MB a 1 GB per batch.
Un buon punto di partenza per molti carichi di lavoro è da 250 MB a 500 MB per batch, quindi modificare in base ai limiti di velocità effettiva e memoria client.
Qualità della connessione di caricamento del client
Bulk copy trasferisce i dati in streaming dal client all'endpoint del data warehouse. Se la larghezza di banda del caricamento è limitata o la latenza di rete è elevata, la velocità effettiva di inserimento può diminuire anche quando sono disponibili risorse del warehouse.
Per ottenere prestazioni ottimali, eseguire l'applicazione client nella stessa area Azure del warehouse e usare un percorso di rete a bassa latenza e larghezza di banda elevata.
API BCP confrontata con COPY INTO
- Usare l'API BCP quando i dati vengono generati o mantenuti nel livello client/applicazione e l'inserimento diretto è obbligatorio.
- Usa
COPY INTOquando puoi caricare i file nell'archiviazione e vuoi il percorso primario lato server per l'acquisizione con la massima velocità effettiva.
Contenuti correlati
- Inserire i dati nel data warehouse
- Inserire dati nel warehouse usando l'istruzione COPY
- Uso dell'API di copia bulk per l'inserimento più rapido in Fabric Data Warehouse (blog)
- Copia in blocco tramite l'utilità bcp
- Classe SqlBulkCopy
- Classe SQLServerBulkCopy
- Uso della copia in blocco con il driver JDBC