Inserimento bulk - attivitàBulk Insert Task

L'attività Inserimento bulk rappresenta un modo efficiente per copiare grandi quantità di dati in una tabella o in una vista di SQL ServerSQL Server .The Bulk Insert task provides an efficient way to copy large amounts of data into a SQL ServerSQL Server table or view. Si supponga, ad esempio, che nella propria società venga usato un mainframe per archiviare l'elenco prodotti, che include un milione di righe, ma che il sistema e-commerce dell'azienda usi SQL ServerSQL Server per popolare le pagine Web.For example, suppose your company stores its million-row product list on a mainframe system, but the company's e-commerce system uses SQL ServerSQL Server to populate Web pages. È necessario aggiornare la tabella di SQL ServerSQL Server dei prodotti durante la notte utilizzando l'elenco master dei prodotti del mainframe.You must update the SQL ServerSQL Server product table nightly with the master product list from the mainframe. A tale scopo è possibile salvare l'elenco prodotti in un file delimitato da tabulazione e utilizzare l'attività Inserimento bulk per copiare i dati direttamente nella tabella di SQL ServerSQL Server .To update the table, you save the product list in a tab-delimited format and use the Bulk Insert task to copy the data directly into the SQL ServerSQL Server table.

Per garantire la massima velocità di copia, non è consentito eseguire trasformazioni durante lo spostamento dei dati dal file di origine alla tabella o alla vista.To ensure high-speed data copying, transformations cannot be performed on the data while it is moving from the source file to the table or view.

Considerazioni sull'utilizzoUsage Considerations

Prima di utilizzare l'attività Inserimento bulk, considerare gli aspetti seguenti:Before you use the Bulk Insert task, consider the following:

  • Con l'attività Inserimento bulk i dati possono essere trasferiti solo da un file di testo a una tabella o a una vista di SQL ServerSQL Server .The Bulk Insert task can transfer data only from a text file into a SQL ServerSQL Server table or view. Per usare l'attività Inserimento bulk per trasferire dati da altri sistemi di gestione di database (DBMS, Database Management System), è necessario esportare i dati dall'origine a un file di testo e quindi importarli dal file di testo a una tabella o vista di SQL ServerSQL Server .To use the Bulk Insert task to transfer data from other database management systems (DBMSs), you must export the data from the source to a text file and then import the data from the text file into a SQL ServerSQL Server table or view.

  • La destinazione deve essere una tabella o vista di database di SQL ServerSQL Server .The destination must be a table or view in a SQL ServerSQL Server database. Se nella tabella o vista di destinazione sono già presenti dati, durante l'esecuzione dell'attività Inserimento bulk i nuovi dati verranno aggiunti a quelli esistenti.If the destination table or view already contains data, the new data is appended to the existing data when the Bulk Insert task runs. Se si desidera sostituire i dati, prima dell'attività Inserimento bulk avviare un'attività Esegui SQL che esegue un'istruzione DELETE o TRUNCATE.If you want to replace the data, run an Execute SQL task that runs a DELETE or TRUNCATE statement before you run the Bulk Insert task. Per altre informazioni, vedere Attività Esegui SQL.For more information, see Execute SQL Task.

  • Nell'oggetto attività Inserimento bulk è possibile utilizzare un file di formato.You can use a format file in the Bulk Insert task object. Se il file di formato è stato creato dall'utilità bcp , è possibile specificarne il percorso nell'attività Inserimento bulk.If you have a format file that was created by the bcp utility, you can specify its path in the Bulk Insert task. L'attività Inserimento bulk supporta file di formato sia XML che non XML.The Bulk Insert task supports both XML and nonXML format files. Per altre informazioni sui file di formato, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For more information about format files, see Format Files for Importing or Exporting Data (SQL Server).

  • I pacchetti che contengono attività Inserimento bulk possono essere eseguiti solo dai membri del ruolo predefinito del server sysadmin.Only members of the sysadmin fixed server role can run a package that contains a Bulk Insert task.

Attività Inserimento bulk con le transazioniBulk Insert Task with Transactions

Se le dimensioni del batch non sono impostate, l'intera operazione di copia bulk verrà considerata come un'unica transazione.If a batch size is not set, the complete bulk copy operation is treated as one transaction. Se il valore delle dimensioni del batch è 0 , i dati verranno inseriti in un solo batch.A batch size of 0 indicates that the data is inserted in one batch. Se le dimensioni del batch sono impostate, ogni batch rappresenterà una transazione di cui verrà eseguito il commit alla fine dell'esecuzione.If a batch size is set, each batch represents a transaction that is committed when the batch finishes running.

Il comportamento dell'attività Inserimento bulk in relazione alle transazioni varia a seconda che l'attività partecipi o meno alla transazione del pacchetto.The behavior of the Bulk Insert task, as it relates to transactions, depends on whether the task joins the package transaction. Se l'attività Inserimento bulk non partecipa alla transazione del pacchetto, per ogni batch privo di errori verrà eseguito il commit prima di procedere con il batch successivo.If the Bulk Insert task does not join the package transaction, each error-free batch is committed as a unit before the next batch is tried. Se l'attività Inserimento bulk partecipa alla transazione, al termine dell'attività i batch privi di errori rimarranno nella transazioneIf the Bulk Insert task joins the package transaction, error-free batches remain in the transaction at the conclusion of the task. e saranno soggetti alle operazioni di commit o di rollback del pacchetto.These batches are subject to the commit or rollback operation of the package.

In caso di errore nell'attività Inserimento bulk, i batch già caricati non verranno sottoposti automaticamente a rollback. Analogamente l'esito positivo dell'attività non comporta automaticamente l'esecuzione del commit per tali batch.A failure in the Bulk Insert task does not automatically roll back successfully loaded batches; similarly, if the task succeeds, batches are not automatically committed. Le operazioni di commit e di rollback vengono eseguite solo se le proprietà del flusso di lavoro o del pacchetto sono state impostate in questo senso.Commit and rollback operations occur only in response to package and workflow property settings.

Origine e destinazioneSource and Destination

Quando si specifica il percorso del file di testo di origine, prendere in considerazione i fattori seguenti:When you specify the location of the text source file, consider the following:

  • Il server deve disporre delle autorizzazioni necessarie per accedere sia al file che al database di destinazione.The server must have permission to access both the file and the destination database.

  • Poiché l'attività Inserimento bulk viene eseguita dal server,The server runs the Bulk Insert task. tutti i file di formato utilizzati dall'attività devono trovarsi sul server.Therefore, any format file that the task uses must be located on the server.

  • Il file di origine caricato dall'attività Inserimento bulk può trovarsi sullo stesso server del database di SQL ServerSQL Server in cui vengono inseriti i dati oppure su un server remoto.The source file that the Bulk Insert task loads can be on the same server as the SQL ServerSQL Server database into which data is inserted, or on a remote server. Se il file si trova in un server remoto, è necessario specificarne il percorso in formato UNC (Universal Naming Convention).If the file is on a remote server, you must specify the file name using the Universal Naming Convention (UNC) name in the path.

Ottimizzazione delle prestazioniPerformance Optimization

Per ottimizzare le prestazioni, prendere in considerazione i fattori seguenti:To optimize performance, consider the following:

  • Se il file di testo si trova nello stesso computer del database di SQL ServerSQL Server in cui vengono inseriti i dati, l'operazione di copia avviene a una velocità superiore, in quanto i dati non devono essere trasferiti in rete.If the text file is located on the same computer as the SQL ServerSQL Server database into which data is inserted, the copy operation occurs at an even faster rate because the data is not moved over the network.

  • L'attività Inserimento bulk non registra le righe che determinano errori.The Bulk Insert task does not log error-causing rows. Se è necessario acquisire tali informazioni, utilizzare gli output degli errori dei componenti flusso di dati per registrare in un file di eccezioni le righe che provocano errori.If you must capture this information, use the error outputs of data flow components to capture error-causing rows in an exception file.

Voci di log personalizzate disponibili nell'attività Inserimento bulkCustom Log Entries Available on the Bulk Insert Task

Nella tabella seguente sono elencate le voci di log personalizzate disponibili per l'attività Inserimento bulk.The following table lists the custom log entries for the Bulk Insert task. Per altre informazioni, vedere registrazione di Integration Services (SSIS).For more information, see Integration Services (SSIS) Logging.

Voce di logLog entry DescriptionDescription
BulkInsertTaskBeginBulkInsertTaskBegin Indica che l'inserimento bulk è iniziato.Indicates that the bulk insert began.
BulkInsertTaskEndBulkInsertTaskEnd Indica che l'inserimento bulk è terminato.Indicates that the bulk insert finished.
BulkInsertTaskInfosBulkInsertTaskInfos Offre informazioni descrittive sull'attività.Provides descriptive information about the task.

Configurazione dell'attività Inserimento bulkBulk Insert Task Configuration

Per configurare l'attività Inserimento bulk, procedere nel modo seguente:You can configure the Bulk Insert task in the following ways:

  • Specificare la gestione connessione OLE DB da usare per la connessione al database SQL ServerSQL Server di destinazione e la tabella o la vista in cui inserire i dati.Specify the OLE DB connection manager to connect to the destination SQL ServerSQL Server database and the table or view into which data is inserted. L'attività Inserimento bulk supporta solo le connessioni OLE DB per il database di destinazione.The Bulk Insert task supports only OLE DB connections for the destination database.

  • Specificare la gestione connessione file o file flat da utilizzare per accedere al file di origine.Specify the File or Flat File connection manager to access the source file. L'attività Inserimento bulk utilizza la gestione connessione solo per il percorso del file di origine.The Bulk Insert task uses the connection manager only for the location of the source file. L'attività ignora le altre opzioni selezionate nell'editor gestione connessione.The task ignores other options that you select in the connection manager editor.

  • Definire il formato utilizzato dall'attività Inserimento bulk, utilizzando un file di formato o definendo i delimitatori di colonna e di riga dei dati di origine.Define the format that is used by the Bulk Insert task, either by using a format file or by defining the column and row delimiters of the source data. Se si utilizza un file di formato, specificare la gestione connessione file da utilizzare per accedere a tale file.If using a format file, specify the File connection manager to access the format file.

  • Specificare le azioni da eseguire nella tabella o nella vista di destinazione quando i dati vengono inseriti dall'attività.Specify actions to perform on the destination table or view when the task inserts the data. È possibile specificare se verificare i vincoli, abilitare IDENTITY_INSERT, mantenere i valori Null, attivare trigger o bloccare la tabella.The options include whether to check constraints, enable identity inserts, keep nulls, fire triggers, or lock the table.

  • Fornire informazioni sul batch di dati da inserire, ad esempio le dimensioni del batch, la prima e l'ultima riga del file da inserire, il numero massimo di errori oltre il quale arrestare l'inserimento delle righe e i nomi delle colonne che verranno ordinate.Provide information about the batch of data to insert, such as the batch size, the first and last row from the file to insert, the number of insert errors that can occur before the task stops inserting rows, and the names of the columns that will be sorted.

    Se l'attività Inserimento bulk utilizza una gestione connessione file flat per accedere al file di origine, invece del formato specificato nella gestione connessione file flatIf the Bulk Insert task uses a Flat File connection manager to access the source file, the task does not use the format specified in the Flat File connection manager. usa il formato specificato in un file di formato o i valori delle proprietà RowDelimiter e ColumnDelimiter dell'attività.Instead, the Bulk Insert task uses either the format specified in a format file, or the values of the RowDelimiter and ColumnDelimiter properties of the task.

    È possibile impostare le proprietà tramite Progettazione SSISSSIS o a livello di codice.You can set properties through SSISSSIS Designer or programmatically.

    Per ulteriori informazioni sulle proprietà che è possibile impostare in Progettazione SSISSSIS , fare clic sull'argomento seguente:For more information about the properties that you can set in SSISSSIS Designer, click the following topic:

  • Pagina EspressioniExpressions Page

    Per altre informazioni sull'impostazione di queste proprietà in Progettazione SSISSSIS , fare clic sull'argomento seguente:For more information about how to setthese properties in SSISSSIS Designer, click the following topic:

  • Impostazione delle proprietà di un'attività o di un contenitoreSet the Properties of a Task or Container

Configurazione a livello di codice dell'attività Inserimento bulkProgrammatic Configuration of the Bulk Insert Task

Per ulteriori informazioni sull'impostazione di queste proprietà a livello di codice, fare clic sull'argomento seguente:For more information about programmatically setting these properties, click the following topic:

Impostare le proprietà di un'attività o di un contenitoreSet the Properties of a Task or Container

Editor attività Inserimento bulk (pagina Connessione)Bulk Insert Task Editor (Connection Page)

Usare la pagina Connessione della finestra di dialogo Editor attività Inserimento bulk per specificare l'origine e la destinazione dell'operazione di inserimento bulk e il formato da usare.Use the Connection page of the Bulk Insert Task Editor dialog box to specify the source and destination of the bulk insert operation and the format to use.

Per altre informazioni sulle operazioni di inserimento bulk, vedere Attività Inserimento bulk e File di formato per l'importazione o l'esportazione di dati (SQL Server).To learn about working with bulk inserts, see Bulk Insert Task and Format Files for Importing or Exporting Data (SQL Server).

OpzioniOptions

ConnessioneConnection
Selezionare una gestione connessione OLE DB nell'elenco oppure fare clic su < nuova connessione... > per creare una nuova connessione.Select an OLE DB connection manager in the list, or click <New connection...> to create a new connection.

Argomenti correlati: gestione connessione OLE DBRelated Topics: OLE DB Connection Manager

DestinationTableDestinationTable
Consente di digitare il nome della tabella o della vista di destinazione o di selezionare una tabella o una vista nell'elenco.Type the name of the destination table or view or select a table or view in the list.

FormatoFormat
Consente di selezionare l'origine del formato per l'inserimento bulk.Select the source of the format for the bulk insert. Per questa proprietà sono disponibili le opzioni elencate nella tabella seguente.This property has the options listed in the following table.

ValoreValue DescriptionDescription
Usa fileUse File Consente di selezionare un file contenente la specifica di formato.Select a file containing the format specification. Selezionando questa opzione viene visualizzata l'opzione dinamica FormatFile.Selecting this option displays the dynamic option, FormatFile.
SpecificaSpecify Consente di specificare il formato.Specify the format. Selezionando questa opzione vengono visualizzate le opzioni dinamiche RowDelimiter e ColumnDelimiter.Selecting this option displays the dynamic options, RowDelimiter and ColumnDelimiter.

FileFile
Selezionare una gestione connessione File o File Flat nell'elenco oppure fare clic su < nuova connessione... > per creare una nuova connessione.Select a File or Flat File connection manager in the list, or click <New connection...> to create a new connection.

Il percorso del file è relativo al Motore di database di SQL Server specificato nella gestione connessione per questa attività.The file location is relative to the SQL Server Database Engine specified in the connection manager for this task. Il file di testo deve essere accessibile dal Motore di database di SQL Server in un disco rigido locale sul server oppure tramite un'unità condivisa o di cui è stato eseguito il mapping a SQL Server.The text file must be accessible by the SQL Server Database Engine either on a local hard drive on the server, or via a share or mapped drive to the SQL Server. Non è possibile accedere al file tramite SSIS Runtime.The file is not accessed by the SSIS Runtime.

Se si accede al file di origine utilizzando una gestione connessione file flat, l'attività Inserimento bulk non utilizzerà il formato specificato nella gestione connessione file flat,If you access the source file by using a Flat File connection manager, the Bulk Insert task does not use the format specified in the Flat File connection manager. ma userà il formato specificato in un file di formato o i valori delle proprietà RowDelimiter e ColumnDelimiter dell'attività.Instead, the Bulk Insert task uses either the format specified in a format file or the values of the RowDelimiter and ColumnDelimiter properties of the task.

Argomenti correlati: gestione connessione File, gestione connessione File FlatRelated Topics: File Connection Manager, Flat File Connection Manager

Aggiorna tabelleRefresh Tables
Consente di aggiornare l'elenco di tabelle e di viste.Refresh the list of tables and views.

Opzioni dinamiche di FormatFormat Dynamic Options

Format = Usa fileFormat = Use File

FormatFileFormatFile
Digitare il percorso del file di formato oppure fare clic sui puntini di sospensione (…) per trovare il file di formato.Type the path of the format file or click the ellipsis button (…) to locate the format file.

Format = SpecificaFormat = Specify

RowDelimiterRowDelimiter
Consente di specificare il delimitatore di riga nel file di origine.Specify the row delimiter in the source file. Il valore predefinito è {CR}{LF}.The default value is {CR}{LF}.

ColumnDelimiterColumnDelimiter
Consente di specificare il delimitatore di colonna nel file di origine.Specify the column delimiter in the source file. Il valore predefinito è Tabulazione.The default is Tab.

Editor attività Inserimento bulk (pagina Generale)Bulk Insert Task Editor (General Page)

Utilizzare la pagina Generale della finestra di dialogo Editor attività Inserimento bulk per assegnare un nome e una descrizione all'attività Inserimento bulk.Use the General page of the Bulk Insert Task Editor dialog box to name and describe the Bulk Insert task.

OpzioniOptions

NomeName
Consente di specificare un nome univoco per l'attività Inserimento bulk.Provide a unique name for the Bulk Insert task. Tale nome viene utilizzato come etichetta nell'icona dell'attività.This name is used as the label in the task icon.

Nota

I nomi delle attività devono essere univoci all'interno di un pacchetto.Task names must be unique within a package.

DescriptionDescription
Consente di digitare una descrizione dell'attività Inserimento bulk.Type a description of the Bulk Insert task.

Editor attività Inserimento bulk (pagina Opzioni)Bulk Insert Task Editor (Options Page)

Utilizzare la pagina Opzioni della finestra di dialogo Editor attività Inserimento bulk per impostare le proprietà relative all'operazione di inserimento bulk.Use the Options page of the Bulk Insert Task Editor dialog box to set properties for the bulk insert operation. L'attività Inserimento bulk consente di copiare grandi quantità di dati all'interno di una vista o tabella di MicrosoftMicrosoft SQL ServerSQL Server .The Bulk Insert task copies large amounts of data into a MicrosoftMicrosoft SQL ServerSQL Server table or view.

Per altre informazioni sull'uso degli inserimenti di massa, vedere Attività Inserimento bulk e BULK INSERT (Transact-SQL).To learn about working with bulk inserts, see Bulk Insert Task and BULK INSERT (Transact-SQL).

OpzioniOptions

CodePageCodePage
Consente di specificare la tabella codici dei dati contenuti nel file.Specify the code page of the data in the data file.

DataFileTypeDataFileType
Consente di specificare il valore di tipo di dati da utilizzare nell'operazione di caricamento.Specify the data-type value to use in the load operation.

BatchSizeBatchSize
Consente di specificare il numero di righe di un batch.Specify the number of rows in a batch. Il valore predefinito è l'intero file di dati.The default is the entire data file. Se si imposta BatchSize su zero, i dati vengono caricati in un singolo batch.If you set BatchSize to zero, the data is loaded in a single batch.

LastRowLastRow
Consente di specificare l'ultima riga da copiare.Specify the last row to copy.

FirstRowFirstRow
Consente di specificare la riga dalla quale iniziare la copia.Specify the first row from which to start copying.

OpzioniOptions

NomeTerm DefinizioneDefinition
Vincoli CHECKCheck constraints Selezionare questa opzione per verificare i vincoli di colonna e tabella.Select to check the table and column constraints.
Mantieni valori NullKeep nulls Selezionare questa opzione per mantenere i valori Null durante l'operazione di inserimento bulk anziché inserire tutti i valori predefiniti per le colonne vuote.Select to retain null values during the bulk insert operation, instead of inserting any default values for empty columns.
Consenti IDENTITY_INSERTEnable identity insert Selezionare questa opzione per inserire valori esistenti in una colonna Identity.Select to insert existing values into an identity column.
Blocco a livello di tabellaTable lock Selezionare questa opzione per bloccare la tabella durante l'inserimento bulk.Select to lock the table during the bulk insert.
Attive triggerFire triggers Selezionare questa opzione per attivare tutti i trigger di eliminazione, aggiornamento o inserimento nella tabella.Select to fire any insert, update, or delete triggers on the table.

SortedDataSortedData
Consente di specificare la clausola ORDER BY nell'istruzione di inserimento bulk.Specify the ORDER BY clause in the bulk insert statement. Il nome della colonna deve corrispondere a una colonna valida della tabella di destinazione.The column name that you supply must be a valid column in the destination table. Il valore predefinito è false.The default is false. Questo valore implica che i dati non vengono ordinati da una clausola ORDER BY.This means that the data is not sorted by an ORDER BY clause.

MaxErrorsMaxErrors
Consente di specificare il numero massimo di errori che possono verificarsi prima dell'annullamento dell'operazione di inserimento bulk.Specify the maximum number of errors that can occur before the bulk insert operation is canceled. Un valore pari a 0 indica che è consentito un numero infinito di errori.A value of 0 indicates that an infinite number of errors are allowed.

Nota

Ogni riga che non è possibile importare tramite l'operazione di caricamento bulk viene considerata un errore.Each row that cannot be imported by the bulk load operation is counted as one error.