Informazioni sulle operazioni di importazione ed esportazione di massa

Microsoft SQL Server 2005 supporta l'esportazione di massa dei dati da una tabella di SQL Server e l'importazione di massa dei dati in una tabella di SQL Server o in una vista non partizionata. Sono disponibili le modalità di base seguenti.

Metodo Descrizione Importazione dei dati Esportazione dei dati

Utilità bcp

Utilità della riga di comando (Bcp.exe) che esegue l'esportazione e l'importazione di massa dei dati e genera file di formato.

Istruzione BULK INSERT

Istruzione Transact-SQL che importa i dati direttamente da un file di dati in una tabella di database o in una vista non partizionata.

No

Istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...)

Istruzione Transact-SQL che utilizza il provider di set di righe con lettura di massa OPENROWSET per eseguire l'importazione di massa dei dati in una tabella di SQL Server specificando la funzione OPENROWSET(BULK…) per selezionare i dati in un'istruzione INSERT.

No

Confronto tra operazioni in-process e out-of-process

L'istruzione BULK INSERT e la funzione OPENROWSET(BULK) vengono eseguite in-process con SQL Server e condividono lo stesso spazio degli indirizzi di memoria. Poiché i file di dati vengono aperti da un processo di SQL Server, i dati non vengono copiati tra il processo client e i processi di SQL Server. Per considerazioni sulla protezione quando si esegue l'importazione dei dati utilizzando BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...), vedere Importazione di dati per operazioni di massa utilizzando BULK INSERT o OPENROWSET(BULK...).

L'utilità bcp viene invece eseguita out-of-process. Per spostare dati tra spazi di memoria dei processi, bcp deve utilizzare il marshalling dei dati interprocesso. Il marshalling dei dati interprocesso ** rappresenta il processo che consente di convertire in un flusso di byte i parametri di una chiamata al metodo. Tale processo può aggiungere un carico di lavoro notevole per il processore. Tuttavia, dato che bcp analizza e converte i dati in un formato di archiviazione nativo nel processo client, è possibile eseguire la ripartizione del carico di lavoro dell'analisi e della conversione dei dati dal processo di SQL Server. Se esiste un vincolo relativo alla CPU, è pertanto possibile ottenere prestazioni di importazione di massa migliori in un computer che dispone di più CPU o in computer diversi, utilizzando bcp anziché BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK).

File di formato

L'utilità bcp, BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) supportano l'utilizzo di un file di formato specializzato che archivia informazioni relative al formato per ogni campo di un file di dati. Un file di formato può inoltre contenere informazioni sulla tabella di SQL Server corrispondente. Il file di formato può essere utilizzato per specificare tutte le informazioni sul formato necessarie per l'esportazione e l'importazione di massa dei dati da e verso un'istanza di SQL Server.

I file di formato costituiscono un modo flessibile per interpretare i dati così come presenti nel file di dati durante l'importazione, nonché per formattare i dati nel file di dati durante l'esportazione. Grazie a questa flessibilità, non è necessario scrivere codice specifico per interpretare i dati o riformattarli in base ai requisiti specifici di SQL Server o dell'applicazione esterna. Ad esempio, se si esegue l'esportazione di massa dei dati da caricare in un'applicazione che richiede valori separati da virgola, è possibile utilizzare un file di formato per inserire virgole come caratteri di terminazione del campo nei dati esportati.

SQL Server 2005 supporta due tipi di file di formato, i file di formato XML e i file di formato non XML. I file di formato non XML sono supportati dalle versioni precedenti di SQL Server. I file di formato XML rappresentano una novità in SQL Server 2005.

L'utilità bcp è il solo strumento in grado di generare un file di formato. Per ulteriori informazioni, vedere Creazione di un file di formato. Per ulteriori informazioni sui file di formato, vedere File di formato per l'importazione o l'esportazione di dati.

[!NOTA] Nei casi in cui un file di formato non viene fornito durante un'operazione di esportazione o importazione di massa, l'utente può scegliere di ignorare la formattazione predefinita nella riga di comando.

Query Processor e l'importazione di massa

Per eseguire l'importazione di massa dei dati in un'istanza di SQL Server, l'utilità bcp e le istruzioni BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) utilizzano Query Processor.

Tutte e tre le modalità consentono di convertire i dati di un file di dati in set di righe OLE DB. Tuttavia la modalità di conversione varia, come segue:

  • L'utilità bcp legge il file di dati e invia un flusso TDS all'API del programma per la copia di massa (BCP) di SQL Server, che converte i dati in set di righe OLE DB.
  • BULK INSERT e il provider di set di righe con lettura di massa OPENROWSET convertono i dati del file direttamente in un set di righe OLE DB.

I set di righe OLE DB vengono inseriti nella tabella di destinazione da Query Processor, che pianifica e ottimizza ogni operazione.

Considerazioni sulle prestazioni

Anche l'impatto sulle prestazioni può essere significativo quando vengono importate grandi quantità di dati. In alcuni casi, è possibile migliorare le prestazioni modificando il modo in cui un'operazione di importazione o esportazione di massa gestisce uno o più degli elementi seguenti:

  • Parametri per i batch
  • Verifica dei vincoli CHECK
  • Modalità di registrazione delle transazioni di massa. Rilevante per i database che in genere utilizzano il modello di recupero con registrazione completa.
  • Ordinamento dei dati esportati
  • Importazione parallela di dati
  • Blocco tabella
  • Esecuzione dei trigger

Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni dell'importazione di massa.

[!NOTA] Per le operazioni di esportazione di massa non è disponibile alcuna tecnica di ottimizzazione specifica. Queste operazioni consentono semplicemente di selezionare i dati dalla tabella di origine utilizzando un'istruzione SELECT.

Vedere anche

Concetti

Linee guida standard per l'importazione di massa di dati
Formati di dati per l'importazione o l'esportazione
Scenari di importazione ed esportazione di massa di dati
Elaborazione di una singola istruzione SQL

Altre risorse

Performing Bulk Load of XML Data (SQLXML 4.0)
SQL Server Integration Services
Performing Bulk Copy Operations
Utilità bcp
BULK INSERT (Transact-SQL)
File di formato per l'importazione o l'esportazione di dati
OPENROWSET (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005