BULK INSERT (Transact-SQL)BULK INSERT (Transact-SQL)

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di Azure noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Importa un file di dati in una tabella o una vista di database in un formato specificato dall'utente in SQL ServerSQL Server.Imports a data file into a database table or view in a user-specified format in SQL ServerSQL Server

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax


BULK INSERT   
   [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]   
      FROM 'data_file'   
     [ WITH   
    (   
   [ [ , ] BATCHSIZE = batch_size ]   
   [ [ , ] CHECK_CONSTRAINTS ]   
   [ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]   
   [ [ , ] DATAFILETYPE =   
      { 'char' | 'native'| 'widechar' | 'widenative' } ]   
   [ [ , ] DATASOURCE = 'data_source_name' ]
   [ [ , ] ERRORFILE = 'file_name' ]
   [ [ , ] ERRORFILE_DATA_SOURCE = 'data_source_name' ]   
   [ [ , ] FIRSTROW = first_row ]   
   [ [ , ] FIRE_TRIGGERS ]   
   [ [ , ] FORMATFILE_DATASOURCE = 'data_source_name' ]
   [ [ , ] KEEPIDENTITY ]   
   [ [ , ] KEEPNULLS ]   
   [ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]   
   [ [ , ] LASTROW = last_row ]   
   [ [ , ] MAXERRORS = max_errors ]   
   [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]   
   [ [ , ] ROWS_PER_BATCH = rows_per_batch ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
   [ [ , ] TABLOCK ]   

   -- input file format options
   [ [ , ] FORMAT = 'CSV' ]
   [ [ , ] FIELDQUOTE = 'quote_characters']
   [ [ , ] FORMATFILE = 'format_file_path' ]   
   [ [ , ] FIELDTERMINATOR = 'field_terminator' ]   
   [ [ , ] ROWTERMINATOR = 'row_terminator' ]   
    )]   

ArgomentiArguments

database_namedatabase_name
Nome del database contenente la tabella o la vista specificata.Is the database name in which the specified table or view resides. Se viene omesso, il valore predefinito è il database corrente.If not specified, this is the current database.

schema_nameschema_name
Nome dello schema della tabella o della vista.Is the name of the table or view schema. schema_name è facoltativo se lo schema predefinito per l'utente che esegue l'operazione di importazione bulk corrisponde allo schema della tabella o della vista specificata.schema_name is optional if the default schema for the user performing the bulk-import operation is schema of the specified table or view. Se schema non viene specificato e lo schema predefinito dell'utente che esegue l'operazione di importazione bulk è diverso dalla tabella o dalla vista specificata, SQL ServerSQL Server restituisce un messaggio di errore e l'operazione di importazione bulk viene annullata.If schema is not specified and the default schema of the user performing the bulk-import operation is different from the specified table or view, SQL ServerSQL Server returns an error message, and the bulk-import operation is canceled.

table_nametable_name
Nome della tabella o della vista in cui eseguire l'importazione bulk dei dati.Is the name of the table or view to bulk import data into. È possibile utilizzare solo le viste in cui tutte le colonne fanno riferimento alla stessa tabella di base.Only views in which all columns refer to the same base table can be used. Per altre informazioni sulle restrizioni per il caricamento dei dati nelle viste, vedere INSERT (Transact-SQL).For more information about the restrictions for loading data into views, see INSERT (Transact-SQL).

' data_file '' data_file '
Percorso completo del file contenente i dati da importare nella tabella o nella vista specificata.Is the full path of the data file that contains data to import into the specified table or view. L'istruzione BULK INSERT consente di importare dati da un disco, ad esempio unità di rete, dischi floppy, dischi rigidi e così via.BULK INSERT can import data from a disk (including network, floppy disk, hard disk, and so on).

data_file deve specificare un percorso valido dal server in cui è in esecuzione SQL ServerSQL Server.data_file must specify a valid path from the server on which SQL ServerSQL Server is running. Se data_file corrisponde a un file remoto, è necessario specificare il nome UNC (Universal Naming Convention).If data_file is a remote file, specify the Universal Naming Convention (UNC) name. Il formato del nome UNC è \\NomeSistema\NomeCondivisione\Percorso\NomeFile.A UNC name has the form \\Systemname\ShareName\Path\FileName. Ad esempio, \\SystemX\DiskZ\Sales\update.txt.For example, \\SystemX\DiskZ\Sales\update.txt.
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
A partire da SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, data_file può essere presente nell'archiviazione BLOB di Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP1.1, the data_file can be in Azure blob storage.

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

' data_source_name ' ' data_source_name '
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Origine dati esterna denominata che punta alla posizione dell'archiviazione BLOB di Azure del file che verrà importato.Is a named external data source pointing to the Azure Blob storage location of the file that will be imported. L'origine dati esterna deve essere creata tramite l'opzione TYPE = BLOB_STORAGE aggiunta in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Per altre informazioni, vedere CREATE EXTERNAL DATA SOURCE.For more information, see CREATE EXTERNAL DATA SOURCE.

BATCHSIZE *=***batch_sizeBATCHSIZE *=***batch_size
Specifica il numero di righe in un batch.Specifies the number of rows in a batch. Ogni batch viene copiato nel server come singola transazione.Each batch is copied to the server as one transaction. In caso di errori, SQL ServerSQL Server esegue il commit o il rollback della transazione per ogni batch.If this fails, SQL ServerSQL Server commits or rolls back the transaction for every batch. Per impostazione predefinita, tutti i dati inclusi nel file di dati specificato costituiscono un batch.By default, all data in the specified data file is one batch. Per alcune considerazioni relative alle prestazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.For information about performance considerations, see "Remarks," later in this topic.

CHECK_CONSTRAINTSCHECK_CONSTRAINTS
Specifica che tutti i vincoli sulla tabella o sulla vista di destinazione devono essere controllati durante l'operazione di importazione bulk.Specifies that all constraints on the target table or view must be checked during the bulk-import operation. Se non si specifica l'opzione CHECK_CONSTRAINTS, i vincoli CHECK e FOREIGN KEY vengono ignorati e al termine dell'operazione il vincolo sulla tabella viene contrassegnato come non attendibile.Without the CHECK_CONSTRAINTS option, any CHECK and FOREIGN KEY constraints are ignored, and after the operation, the constraint on the table is marked as not-trusted.

Nota

I vincoli UNIQUE e PRIMARY KEY vengono sempre applicati.UNIQUE, and PRIMARY KEY constraints are always enforced. Durante l'importazione in una colonna di tipo carattere definita con un vincolo NOT NULL, tramite BULK INSERT viene inserita una stringa vuota se non è presente alcun valore nel file di testo.When importing into a character column that is defined with a NOT NULL constraint, BULK INSERT inserts a blank string when there is no value in the text file.

A un certo punto, sarà necessario esaminare i vincoli nell'intera tabella.At some point, you must examine the constraints on the whole table. Se prima dell'operazione di importazione bulk la tabella non era vuota, il costo per la riconvalida dei vincoli può essere superiore a quello correlato all'applicazione dei vincoli CHECK ai dati incrementali.If the table was non-empty before the bulk-import operation, the cost of revalidating the constraint may exceed the cost of applying CHECK constraints to the incremental data.

Una situazione in cui può essere necessario disabilitare i vincoli (comportamento predefinito) è rappresentata dal caso in cui i dati di input contengono righe che violano i vincoli.A situation in which you might want constraints disabled (the default behavior) is if the input data contains rows that violate constraints. Se si disabilitano i vincoli CHECK, è possibile importare i dati e quindi utilizzare istruzioni Transact-SQLTransact-SQL per rimuovere i dati non validi.With CHECK constraints disabled, you can import the data and then use Transact-SQLTransact-SQL statements to remove the invalid data.

Nota

L'opzione MAXERRORS non viene applicata al controllo dei vincoli.The MAXERRORS option does not apply to constraint checking.

CODEPAGE = { ' ACP ' | ' OEM ' | ' RAW ' | 'code_page' }CODEPAGE = { ' ACP ' | ' OEM ' | ' RAW ' | 'code_page' }
Specifica la tabella codici dei dati contenuti nel file di dati.Specifies the code page of the data in the data file. CODEPAGE è pertinente solo se i dati contengono colonne di tipo char, varchar o text con valori carattere maggiori di 127 o minori di 32.CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

Importante

CODEPAGE non è un'opzione supportata in Linux.CODEPAGE is not a supported option on Linux.

Nota

MicrosoftMicrosoft consiglia di specificare un nome di regole di confronto per ogni colonna in un file di formato. recommends that you specify a collation name for each column in a format file.

Valore CODEPAGECODEPAGE value DescrizioneDescription
ACPACP Le colonne con tipo di dati char, varchar o text vengono convertire dalla tabella codici ANSIANSI/ MicrosoftMicrosoft Windows (ISO 1252) a quella di SQL ServerSQL Server.Columns of char, varchar, or text data type are converted from the ANSIANSI/ MicrosoftMicrosoft Windows code page (ISO 1252) to the SQL ServerSQL Server code page.
OEM (predefinito)OEM (default) Le colonne con tipo di dati char, varchar o text vengono convertire dalla tabella codici OEM di sistema a quella di SQL ServerSQL Server.Columns of char, varchar, or text data type are converted from the system OEM code page to the SQL ServerSQL Server code page.
RAWRAW Non viene eseguita alcuna conversione da una tabella codici a un'altra. Si tratta dell'opzione più rapida.No conversion from one code page to another occurs; this is the fastest option.
code_pagecode_page Numero specifico della tabella codici, ad esempio 850.Specific code page number, for example, 850.

** Importante *\* Le versioni precedenti a SQL Server 2016 (13.x)SQL Server 2016 (13.x) non supportano la tabella codici 65001 (codifica UTF-8).** Important *\* Versions prior to SQL Server 2016 (13.x)SQL Server 2016 (13.x) do not support code page 65001 (UTF-8 encoding).

DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }DATAFILETYPE = { 'char' | 'native' | 'widechar' | 'widenative' }
Specifica che l'operazione di importazione viene eseguita tramite BULK INSERT utilizzando il valore specificato per il tipo di file di dati.Specifies that BULK INSERT performs the import operation using the specified data-file type value.

Valore DATAFILETYPEDATAFILETYPE value Rappresentazione di tutti i datiAll data represented in:
char (impostazione predefinita)char (default) Formato carattere.Character format.

Per altre informazioni, vedere Usare il formato carattere per importare o esportare dati (SQL Server).For more information, see Use Character Format to Import or Export Data (SQL Server).
nativenative Tipi di dati nativi (database).Native (database) data types. Creare il file di dati nativo tramite l'importazione bulk dei dati da SQL ServerSQL Server tramite l'utilità bcp.Create the native data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

Il valore native rappresenta un'alternativa con prestazioni superiori rispetto al valore char.The native value offers a higher performance alternative to the char value.

Per altre informazioni, vedere Usare il formato nativo per importare o esportare dati (SQL Server).For more information, see Use Native Format to Import or Export Data (SQL Server).
widecharwidechar Caratteri Unicode.Unicode characters.

Per altre informazioni, vedere Usare il formato carattere Unicode per importare o esportare dati (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).
widenativewidenative Tipi di dati nativi (database), ad eccezione delle colonne di tipo char, varchar e text, in cui i dati vengono archiviati in formato Unicode.Native (database) data types, except in char, varchar, and text columns, in which data is stored as Unicode. Creare il file di dati widenative tramite l'importazione bulk dei dati da SQL ServerSQL Server tramite l'utilità bcp.Create the widenative data file by bulk importing data from SQL ServerSQL Server using the bcp utility.

Il valore widenative rappresenta un'alternativa con prestazioni migliori rispetto a widechar.The widenative value offers a higher performance alternative to widechar. Se il file di dati contiene caratteri estesi ANSIANSI, specificare widenative.If the data file contains ANSIANSI extended characters, specify widenative.

Per altre informazioni, vedere Usare il formato Unicode nativo per importare o esportare dati (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

ERRORFILE ='file_name'ERRORFILE ='file_name'
Specifica il file utilizzato per raccogliere le righe che contengono errori di formattazione e non possono essere convertite in un set di righe OLE DB.Specifies the file used to collect rows that have formatting errors and cannot be converted to an OLE DB rowset. Tali righe vengono copiate nel file degli errori dal file di dati così come sono.These rows are copied into this error file from the data file "as is."

Il file degli errori viene creato durante l'esecuzione del comando.The error file is created when the command is executed. Se il file esiste già, viene generato un errore.An error occurs if the file already exists. Viene inoltre creato un file di controllo con estensione ERROR.txt.Additionally, a control file that has the extension .ERROR.txt is created. Questo file contiene un riferimento a ogni riga nel file degli errori e offre informazioni di diagnostica.This references each row in the error file and provides error diagnostics. Una volta corretti gli errori, è possibile caricare i dati.As soon as the errors have been corrected, the data can be loaded.
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. A partire da SQL Server 2017 (14.x)SQL Server 2017 (14.x), error_file_path può essere presente nell'archiviazione BLOB di Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x), the error_file_path can be in Azure blob storage.

'errorfile_data_source_name''errorfile_data_source_name'
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Origine dati esterna denominata che punta alla posizione di archiviazione BLOB di Azure del file degli errori rilevati durante l'importazione.Is a named external data source pointing to the Azure Blob storage location of the error file that will contain errors found during the import. L'origine dati esterna deve essere creata tramite l'opzione TYPE = BLOB_STORAGE aggiunta in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Per altre informazioni, vedere CREATE EXTERNAL DATA SOURCE.For more information, see CREATE EXTERNAL DATA SOURCE.

FIRSTROW *=***first_rowFIRSTROW *=***first_row
Specifica il numero della prima riga da caricare.Specifies the number of the first row to load. Il valore predefinito è la prima riga nel file di dati specificato.The default is the first row in the specified data file. FIRSTROW è in base 1.FIRSTROW is 1-based.

Nota

L'attributo FIRSTROW non è progettato per ignorare le intestazioni di colonna.The FIRSTROW attribute is not intended to skip column headers. Nell'istruzione BULK INSERT non è possibile ignorare le intestazioni.Skipping headers is not supported by the BULK INSERT statement. Quando vengono ignorate righe specifiche, Motore di database di SQL ServerSQL Server Database Engine esegue la ricerca solo nei caratteri di terminazione dei campi e non convalida i dati nei campi delle righe ignorate.When skipping rows, the Motore di database di SQL ServerSQL Server Database Engine looks only at the field terminators, and does not validate the data in the fields of skipped rows.

FIRE_TRIGGERSFIRE_TRIGGERS
Specifica che gli eventuali trigger di inserimento definiti nella tabella di destinazione vengono eseguiti durante l'operazione di importazione bulk.Specifies that any insert triggers defined on the destination table execute during the bulk-import operation. Se sono presenti trigger definiti per operazioni INSERT nella tabella di destinazione, questi trigger vengono attivati per ogni batch completato.If triggers are defined for INSERT operations on the target table, they are fired for every completed batch.

Se non si specifica FIRE_TRIGGERS, non viene eseguito alcun trigger di inserimento.If FIRE_TRIGGERS is not specified, no insert triggers execute.

FORMATFILE_DATASOURCE = 'data_source_name'FORMATFILE_DATASOURCE = 'data_source_name'
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) 1.1.
Origine dati esterna denominata che punta alla posizione dell'archiviazione BLOB di Azure del file di formato che definisce lo schema dei dati importati.Is a named external data source pointing to the Azure Blob storage location of the format file that will define the schema of imported data. L'origine dati esterna deve essere creata tramite l'opzione TYPE = BLOB_STORAGE aggiunta in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.The external data source must be created using the TYPE = BLOB_STORAGE option added in SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1. Per altre informazioni, vedere CREATE EXTERNAL DATA SOURCE.For more information, see CREATE EXTERNAL DATA SOURCE.

KEEPIDENTITYKEEPIDENTITY
Specifica che il valore o i valori Identity presenti nel file di dati importato devono essere usati per la colonna Identity.Specifies that identity value or values in the imported data file are to be used for the identity column. Se KEEPIDENTITY viene omesso, i valori Identity per la colonna vengono verificati ma non importati e SQL ServerSQL Server assegna automaticamente valori univoci in base ai valori di inizializzazione e di incremento specificati in fase di creazione della tabella.If KEEPIDENTITY is not specified, the identity values for this column are verified but not imported and SQL ServerSQL Server automatically assigns unique values based on the seed and increment values specified during table creation. Se il file di dati non contiene valori per la colonna Identity nella tabella o nella vista, utilizzare un file di formato per specificare che durante l'importazione dei dati la colonna Identity nella tabella o nella vista deve essere ignorata. SQL ServerSQL Server assegna automaticamente valori univoci alla colonna.If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view is to be skipped when importing data; SQL ServerSQL Server automatically assigns unique values for the column. Per altre informazioni, vedere DBCC CHECKIDENT (Transact-SQL).For more information, see DBCC CHECKIDENT (Transact-SQL).

Per altre informazioni sul mantenimento dei valori Identity, vedere Mantenere i valori Identity durante l'importazione bulk dei dati (SQL Server).For more information, see about keeping identify values see Keep Identity Values When Bulk Importing Data (SQL Server).

KEEPNULLSKEEPNULLS
Specifica che durante l'operazione di importazione bulk le colonne vuote devono mantenere un valore Null. Ciò significa che durante l'operazione non verranno inseriti eventuali valori predefiniti per le colonne vuote.Specifies that empty columns should retain a null value during the bulk-import operation, instead of having any default values for the columns inserted. Per altre informazioni, vedere Mantenere i valori Null o usare i valori predefiniti durante l'importazione in blocco (SQL Server).For more information, see Keep Nulls or Use Default Values During Bulk Import (SQL Server).

KILOBYTES_PER_BATCH = kilobytes_per_batchKILOBYTES_PER_BATCH = kilobytes_per_batch
Specifica il numero approssimativo di kilobyte (KB) di dati per ogni batch come kilobytes_per_batch.Specifies the approximate number of kilobytes (KB) of data per batch as kilobytes_per_batch. Per impostazione predefinita, il valore KILOBYTES_PER_BATCH è sconosciuto.By default, KILOBYTES_PER_BATCH is unknown. Per alcune considerazioni relative alle prestazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.For information about performance considerations, see "Remarks," later in this topic.

LASTROW*=***last_rowLASTROW*=***last_row
Specifica il numero dell'ultima riga da caricare.Specifies the number of the last row to load. Il valore predefinito è 0, che indica l'ultima riga nel file di dati specificato.The default is 0, which indicates the last row in the specified data file.

MAXERRORS = max_errorsMAXERRORS = max_errors
Specifica il numero massimo di errori di sintassi consentiti nei dati prima dell'annullamento dell'operazione di importazione bulk.Specifies the maximum number of syntax errors allowed in the data before the bulk-import operation is canceled. Ogni riga che non è possibile importare tramite l'operazione di importazione bulk viene ignorata e considerata come errore.Each row that cannot be imported by the bulk-import operation is ignored and counted as one error. Se non si specifica max_errors, il valore predefinito è 10.If max_errors is not specified, the default is 10.

Nota

L'opzione MAX_ERRORS non è applicabile alle verifiche dei vincoli o alla conversione di tipi di dati money e bigint.The MAX_ERRORS option does not apply to constraint checks or to converting money and bigint data types.

ORDER ( { column [ ASC | DESC ] } [ ,... n ] )ORDER ( { column [ ASC | DESC ] } [ ,... n ] )
Specifica il tipo di ordinamento dei dati nel file.Specifies how the data in the data file is sorted. Le prestazioni dell'importazione bulk sono migliori se i dati da importare vengono ordinati in base all'indice cluster della tabella, se disponibile.Bulk import performance is improved if the data being imported is sorted according to the clustered index on the table, if any. Se il file di dati viene ordinato in modo diverso rispetto all'ordine di una chiave di indice cluster o se la tabella non include un indice cluster, la clausola ORDER viene ignorata.If the data file is sorted in a different order, that is other than the order of a clustered index key or if there is no clustered index on the table, the ORDER clause is ignored. I nomi di colonna specificati devono corrispondere a nomi di colonna validi nella tabella di destinazione.The column names supplied must be valid column names in the destination table. Per impostazione predefinita, per l'operazione di inserimento bulk si presume che il file di dati non sia ordinato.By default, the bulk insert operation assumes the data file is unordered. Per garantire l'ottimizzazione dell'importazione bulk, in SQL ServerSQL Server viene inoltre verificato che i dati importati siano ordinati.For optimized bulk import, SQL ServerSQL Server also validates that the imported data is sorted.

nn
Segnaposto che indica la possibilità di specificare più colonne.Is a placeholder that indicates that multiple columns can be specified.

ROWS_PER_BATCH *=***rows_per_batchROWS_PER_BATCH *=***rows_per_batch
Indica il numero approssimativo di righe di dati nel file di dati.Indicates the approximate number of rows of data in the data file.

Per impostazione predefinita, tutti i dati nel file di dati vengono inviati al server come singola transazione e il numero di righe nel batch non è noto per Query Optimizer.By default, all the data in the data file is sent to the server as a single transaction, and the number of rows in the batch is unknown to the query optimizer. Se si specifica ROWS_PER_BATCH (con valore > 0), il server utilizza questo valore per ottimizzare l'operazione di importazione bulk.If you specify ROWS_PER_BATCH (with a value > 0) the server uses this value to optimize the bulk-import operation. Il valore specificato per ROWS_PER_BATCH deve essere più o meno uguale al numero effettivo di righe.The value specified for ROWS_PER_BATCH should approximately the same as the actual number of rows. Per alcune considerazioni relative alle prestazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.For information about performance considerations, see "Remarks," later in this topic.

TABLOCKTABLOCK
Imposta l'acquisizione di un blocco a livello di tabella per l'intera durata dell'operazione di importazione bulk.Specifies that a table-level lock is acquired for the duration of the bulk-import operation. Una tabella può essere caricata simultaneamente da più client se non include indici e si specifica TABLOCK.A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified. Per impostazione predefinita, la modalità di blocco è determinata dall'opzione table lock on bulk loaddella tabella.By default, locking behavior is determined by the table option table lock on bulk load. Quando un blocco viene mantenuto attivo solo per la durata dell'operazione di importazione bulk, la contesa tra blocchi nella tabella viene ridotta, producendo in alcuni casi un miglioramento significativo delle prestazioni.Holding a lock for the duration of the bulk-import operation reduces lock contention on the table, in some cases can significantly improve performance. Per alcune considerazioni relative alle prestazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.For information about performance considerations, see "Remarks," later in this topic.

Per l'indice columnstore,For columnstore index. il comportamento di blocco è diverso perché è internamente suddiviso in più set di righe.the locking behaviour is different because it is internally divided into multiple rowsets. Ogni thread carica dati esclusivamente in ogni set di righe tramite l'applicazione di un blocco X al set di righe, consentendo il caricamento parallelo dei dati con sessioni di caricamento dati simultanee.Each thread loads data exclusively into each rowset by taking a X lock on the rowset allowing parallel data load with concurrent data load sessions. L'uso dell'opzione TABLOCK causa l'applicazione da parte del thread di un blocco X sulla tabella (a differenza del blocco aggiornamenti bulk per i set di righe tradizionali), che impedisce ad altri thread simultanei di caricare dati contemporaneamente.The use of TABLOCK option will cause thread to take an X lock on the table (unlike BU lock for traditional rowsets) which will prevent other concurrent threads to load data concurrently.

Opzioni di formato del file di inputInput file format options

FORMAT = 'CSV'FORMAT = 'CSV'
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Specifica un file di valori separati da virgole conforme allo standard RFC 4180.Specifies a comma separated values file compliant to the RFC 4180 standard.

FIELDQUOTE = 'field_quote'FIELDQUOTE = 'field_quote'
Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
Specifica il carattere da usare come carattere virgolette nel file CSV.Specifies a character that will be used as the quote character in the CSV file. Se non viene specificato alcun carattere, viene usato il carattere virgolette (") in base alla definizione dello standard RFC 4180.If not specified, the quote character (") will be used as the quote character as defined in the RFC 4180 standard.

FORMATFILE ='format_file_path'FORMATFILE ='format_file_path'
Specifica il percorso completo di un file di formato.Specifies the full path of a format file. Un file di formato descrive il file di dati contenente le risposte archiviate create tramite l'utilità bcp nella stessa tabella o vista.A format file describes the data file that contains stored responses created by using the bcp utility on the same table or view. È consigliabile utilizzare il file di formato nei casi seguenti:The format file should be used if:

  • Il file di dati contiene un numero di colonne maggiore o minore rispetto alla tabella o alla vista.The data file contains greater or fewer columns than the table or view.

  • Le colonne sono in un ordine diverso.The columns are in a different order.

  • I delimitatori di colonna variano.The column delimiters vary.

  • Sono presenti altre modifiche di formato dei dati.There are other changes in the data format. I file di formato vengono in genere creati tramite l'utilità bcp e modificati in un editor di testo in base alle esigenze.Format files are typically created by using the bcp utility and modified with a text editor as needed. Per altre informazioni, vedere bcp Utility.For more information, see bcp Utility.

Si applica a: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.Applies to: SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1.
A partire da SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, format_file_path può essere presente nell'archiviazione BLOB di Azure.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, the format_file_path can be in Azure blob storage.

FIELDTERMINATOR ='carattere_terminazione_campo'FIELDTERMINATOR ='field_terminator'
Specifica il carattere di terminazione del campo da usare per i file di dati di tipo char e widechar.Specifies the field terminator to be used for char and widechar data files. Il carattere di terminazione del campo predefinito è \t (carattere di tabulazione).The default field terminator is \t (tab character). Per altre informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

ROWTERMINATOR ='carattere_terminazione_riga'ROWTERMINATOR ='row_terminator'
Specifica il carattere di terminazione della riga da usare per i file di dati di tipo char e widechar.Specifies the row terminator to be used for char and widechar data files. Il carattere di terminazione della riga predefinito è \r\n (carattere di nuova riga).The default row terminator is \r\n (newline character). Per altre informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

CompatibilitàCompatibility

L'istruzione BULK INSERT consente di applicare meccanismi restrittivi di convalida e controllo dei dati letti da un file che potrebbero causare errori negli script esistenti eseguiti in dati non validi.BULK INSERT enforces strict data validation and data checks of data read from a file that could cause existing scripts to fail when they are executed on invalid data. L'istruzione BULK INSERT, ad esempio, prevede le verifiche seguenti:For example, BULK INSERT verifies that:

  • Validità delle rappresentazioni native dei tipi di dati float o real.The native representations of float or real data types are valid.

  • Lunghezza in byte pari dei dati Unicode.Unicode data has an even-byte length.

Tipi di datiData Types

Conversione del tipo di dati da string a decimalString-to-Decimal Data Type Conversions

Le conversioni del tipo di dati da string a decimal usate in BULK INSERT seguono le stesse regole della funzione Transact-SQLTransact-SQL CONVERT, che rifiuta le stringhe che rappresentano valori numerici con notazione scientifica.The string-to-decimal data type conversions used in BULK INSERT follow the same rules as the Transact-SQLTransact-SQL CONVERT function, which rejects strings representing numeric values that use scientific notation. Tali stringhe vengono quindi considerate da BULK INSERT come valori non validi e vengono segnalati errori di conversione.Therefore, BULK INSERT treats such strings as invalid values and reports conversion errors.

Per risolvere il problema, usare un file di formato per eseguire l'importazione bulk dei dati float in notazione scientifica in una colonna decimale.To work around this behavior, use a format file to bulk import scientific notation float data into a decimal column. Nel file di formato, descrivere in modo esplicito la colonna come dati real o float.In the format file, explicitly describe the column as real or float data. Per altre informazioni su questi tipi di dati, vedere float e real (Transact-SQL).For more information about these data types, see float and real (Transact-SQL).

Nota

I file di formato rappresentano i dati real con il tipo di dati SQLFLT4 e i dati float con il tipo di dati SQLFLT8.Format files represent real data as the SQLFLT4 data type and float data as the SQLFLT8 data type. Per informazioni sui file di formato diverso da XML, vedere Specifica del tipo di archiviazione di file tramite bcp (SQL Server).For information about non-XML format files, see Specify File Storage Type by Using bcp (SQL Server).

Esempio di importazione di un valore numerico con notazione scientificaExample of Importing a Numeric Value that Uses Scientific Notation

Nell'esempio viene utilizzata la tabella seguente:This example uses the following table:

CREATE TABLE t_float(c1 float, c2 decimal (5,4));  

Si desidera eseguire l'importazione bulk di dati nella tabella t_float.The user wants to bulk import data into the t_float table. Il file di dati, C:\t_float-c.dat, contiene dati float in notazione scientifica, ad esempio:The data file, C:\t_float-c.dat, contains scientific notation float data; for example:

8.0000000000000002E-28.0000000000000002E-2  

Non è tuttavia possibile importare i dati direttamente nella tabella t_float tramite BULK INSERT, in quanto la seconda colonna della tabella, c2, utilizza il tipo di dati decimal.However, BULK INSERT cannot import this data directly into t_float, because its second column, c2, uses the decimal data type. È pertanto necessario un file di formato.Therefore, a format file is necessary. Il file di formato deve eseguire il mapping dei dati float in notazione scientifica al formato decimale della colonna c2.The format file must map the scientific notation float data to the decimal format of column c2.

Nel file di formato seguente viene utilizzato il tipo di dati SQLFLT8 per eseguire il mapping del secondo campo dati alla seconda colonna:The following format file uses the SQLFLT8 data type to map the second data field to the second column:

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30"/> 
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/>  </RECORD>  <ROW> 
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLFLT8"/> 
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLFLT8"/>  </ROW> </BCPFORMAT> 

Per importare i dati di prova nella tabella di prova utilizzando questo file di formato con il nome di file C:\t_floatformat-c-xml.xml, eseguire l'istruzione Transact-SQLTransact-SQL seguente:To use this format file (using the file name C:\t_floatformat-c-xml.xml) to import the test data into the test table, issue the following Transact-SQLTransact-SQL statement:

BULK INSERT bulktest..t_float  
FROM 'C:\t_float-c.dat' WITH (FORMATFILE='C:\t_floatformat-c-xml.xml');  
GO  

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

Tipi di dati per l'esportazione o l'importazione bulk di documenti SQLXMLData Types for Bulk Exporting or Importing SQLXML Documents

Per eseguire l'esportazione o l'importazione bulk di dati SQLXML, utilizzare uno dei tipi di dati seguenti nel file di formato:To bulk export or import SQLXML data, use one of the following data types in your format file:

Tipo di datiData type EffettoEffect
SQLCHAR o SQLVARCHARSQLCHAR or SQLVARCHAR I dati vengono inviati nella tabella codici del client o nella tabella codici implicita delle regole di confronto.The data is sent in the client code page or in the code page implied by the collation). L'effetto è lo stesso ottenuto specificando DATAFILETYPE = 'char' senza indicare un file di formato.The effect is the same as specifying the DATAFILETYPE ='char' without specifying a format file.
SQLNCHAR o SQLNVARCHARSQLNCHAR or SQLNVARCHAR I dati vengono inviati in formato Unicode.The data is sent as Unicode. L'effetto è lo stesso ottenuto specificando DATAFILETYPE = 'widechar' senza indicare un file di formato.The effect is the same as specifying the DATAFILETYPE = 'widechar' without specifying a format file.
SQLBINARY o SQLVARBINSQLBINARY or SQLVARBIN I dati vengono inviati senza conversione.The data is sent without any conversion.

Osservazioni generaliGeneral Remarks

Per un confronto tra l'istruzione BULK INSERT, l'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...) e il comando bcp, vedere Importazione ed esportazione bulk di dati (SQL Server).For a comparison of the BULK INSERT statement, the INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, and the bcp command, see Bulk Import and Export of Data (SQL Server).

Per informazioni sulla preparazione dei dati per le operazioni di importazione bulk, vedere Preparazione dei dati per l'importazione o l'esportazione bulk (SQL Server).For information about preparing data for bulk import, see Prepare Data for Bulk Export or Import (SQL Server).

L'istruzione BULK INSERT può essere eseguita all'interno di una transazione definita dall'utente per importare dati in una tabella o una vista.The BULK INSERT statement can be executed within a user-defined transaction to import data into a table or view. Facoltativamente, per utilizzare più corrispondenze per l'importazione bulk dei dati, una transazione può consentire di specificare la clausola BATCHSIZE nell'istruzione BULK INSERT.Optionally, to use multiple matches for bulk importing data, a transaction can specify the BATCHSIZE clause in the BULK INSERT statement. Se una transazione con più batch viene sottoposta a rollback, tale operazione viene effettuata anche per ogni batch che è stato inviato a SQL ServerSQL Server dalla transazione.If a multiple-batch transaction is rolled back, every batch that the transaction has sent to SQL ServerSQL Server is rolled back.

InteroperabilitàInteroperability

Importazione di dati da un file CSVImporting Data from a CSV file

A partire da SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, BULK INSERT supporta il formato CSV.Beginning with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, BULK INSERT supports the CSV format.
Prima di SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, i file con valori delimitati da virgole (CSV) non sono supportati nelle operazioni di importazione bulk di SQL ServerSQL Server.Before SQL Server 2017 (14.x)SQL Server 2017 (14.x) CTP 1.1, comma-separated value (CSV) files are not supported by SQL ServerSQL Server bulk-import operations. In alcuni casi, tuttavia, è possibile usare un file CSV come file di dati per un'importazione bulk di dati in SQL ServerSQL Server.However, in some cases, a CSV file can be used as the data file for a bulk import of data into SQL ServerSQL Server. Per informazioni sui requisiti per l'importazione di dati da un file di dati CSV, vedere Preparare i dati per l'importazione o l'esportazione bulk (SQL Server).For information about the requirements for importing data from a CSV data file, see Prepare Data for Bulk Export or Import (SQL Server).

Comportamento di registrazioneLogging Behavior

Per informazioni sui casi in cui le operazioni di inserimento di righe eseguite durante l'importazione in blocco vengono registrate nel log delle transazioni, vedere Prerequisiti per la registrazione minima nell'importazione in blocco.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

RestrizioniRestrictions

Quando si utilizza un file di formato con BULK INSERT, è possibile specificare al massimo 1024 campi.When using a format file with BULK INSERT, you can specify up to 1024 fields only. Si tratta dello stesso numero massimo di colonne consentite in una tabella.This is same as the maximum number of columns allowed in a table. Se si utilizza l'istruzione BULK INSERT con un file di dati contenente più di 1024 campi, verrà generato l'errore 4822.If you use BULK INSERT with a data file that contains more than 1024 fields, BULK INSERT generates the 4822 error. L'utilità bcp non ha questa limitazione, pertanto per i file di dati contenenti più di 1024 campi, usare il comando bcp.The bcp utility does not have this limitation, so for data files that contain more than 1024 fields, use the bcp command.

Considerazioni sulle prestazioniPerformance Considerations

Se il numero di pagine da scaricare in un singolo batch supera una soglia interna, è possibile che venga eseguita un'analisi completa del pool di buffer per identificare le pagine da scaricare durante il commit del batch.If the number of pages to be flushed in a single batch exceeds an internal threshold, a full scan of the buffer pool might occur to identify which pages to flush when the batch commits. L'analisi completa può influire sulle prestazioni dell'importazione bulk.This full scan can hurt bulk-import performance. Un probabile caso di superamento della soglia interna si verifica quando un pool di buffer di grandi dimensioni è combinato a un sottosistema di I/O lento.A likely case of exceeding the internal threshold occurs when a large buffer pool is combined with a slow I/O subsystem. Per evitare gli overflow del buffer in sistemi di grandi dimensioni, non utilizzare l'hint TABLOCK, che elimina l'ottimizzazione delle operazioni bulk, o utilizzare un batch di dimensioni minori, che mantiene l'ottimizzazione delle operazioni bulk.To avoid buffer overflows on large machines, either do not use the TABLOCK hint (which will remove the bulk optimizations) or use a smaller batch size (which preserves the bulk optimizations).

È consigliabile testare diverse dimensioni del batch con il caricamento dei dati per individuare la soluzione più adatta per il computer in uso.Because computers vary, we recommend that you test various batch sizes with your data load to find out what works best for you.

SecuritySecurity

Delega degli account di sicurezza (rappresentazione)Security Account Delegation (Impersonation)

Se un utente utilizza un account di accesso di SQL ServerSQL Server , viene utilizzato il profilo di sicurezza dell'account del processo di SQL ServerSQL Server .If a user uses a SQL ServerSQL Server login, the security profile of the SQL ServerSQL Server process account is used. Un account di accesso basato sull'autenticazione di SQL Server non può essere autenticato all'esterno del motore di database.A login using SQL Server authentication cannot be authenticated outside of the Database Engine. Pertanto, quando un comando BULK INSERT viene avviato da un account di accesso che utilizza l'autenticazione di SQL, la connessione ai dati viene effettuata utilizzando il contesto di sicurezza dell'account del processo di SQL Server (l'account utilizzato dal servizio Motore di database di SQL Server).Therefore, when a BULK INSERT command is initiated by a login using SQL Server authentication, the connection to the data is made using the security context of the SQL Server process account (the account used by the SQL Server Database Engine service). Per una lettura corretta dei dati di origine è necessario concedere all'account utilizzato dal motore di database di SQL Server l'accesso ai dati di origine. Al contrario, un utente di SQL ServerSQL Server che esegue l'accesso utilizzando l'autenticazione di Windows potrà leggere solo i file a cui l'account utente può accedere, indipendentemente dal profilo di sicurezza del processo SQL ServerSQL Server.To successfully read the source data you must grant the account used by the SQL Server Database Engine, access to the source data.In contrast, if a SQL ServerSQL Server user logs on by using Windows Authentication, the user can read only those files that can be accessed by the user account, regardless of the security profile of the SQL ServerSQL Server process.

Quando si esegue l'istruzione BULK INSERT con sqlcmd o osql da un computer, si inseriscono dati in SQL ServerSQL Server in un secondo computer e si specifica un parametro data_file in un terzo computer usando un percorso UNC, è possibile che venga restituito l'errore 4861.When executing the BULK INSERT statement by using sqlcmd or osql, from one computer, inserting data into SQL ServerSQL Server on a second computer, and specifying a data_file on third computer by using a UNC path, you may receive a 4861 error.

Per risolvere l'errore, usare l'autenticazione di SQL ServerSQL Server e specificare un account di accesso di SQL ServerSQL Server che usa il profilo di sicurezza dell'account del processo di SQL ServerSQL Server oppure configurare Windows per consentire la delega degli account di sicurezza.To resolve this error, use SQL ServerSQL Server Authentication and specify a SQL ServerSQL Server login that uses the security profile of the SQL ServerSQL Server process account, or configure Windows to enable security account delegation. Per informazioni sull'abilitazione di un account utente in modo che venga considerato attendibile per la delega, vedere la Guida di Windows.For information about how to enable a user account to be trusted for delegation, see Windows Help.

Per altre considerazioni sulla sicurezza, vedere Importare dati per operazioni bulk con BULK INSERT o OPENROWSET(BULK...) (SQL Server).For more information about this and other security considerations for using BULK INSERT, see Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server).

PermissionsPermissions

Sono necessarie le autorizzazioni INSERT e ADMINISTER BULK OPERATIONS.Requires INSERT and ADMINISTER BULK OPERATIONS permissions. Nel database SQL di Azure, sono necessarie le autorizzazioni INSERT e ADMINISTER DATABASE BULK OPERATIONS.In Azure SQL Database, INSERT and ADMINISTER DATABASE BULK OPERATIONS permissions are required. È inoltre richiesta l'autorizzazione ALTER TABLE se si verificano una o più delle condizioni seguenti:Additionally, ALTER TABLE permission is required if one or more of the following is true:

  • Sono presenti vincoli e l'opzione CHECK_CONSTRAINTS non è specificata.Constraints exist and the CHECK_CONSTRAINTS option is not specified.

    Nota

    Per impostazione predefinita, i vincoli sono disabilitati.Disabling constraints is the default behavior. Per verificare i vincoli in modo esplicito, utilizzare l'opzione CHECK_CONSTRAINTS.To check constraints explicitly, use the CHECK_CONSTRAINTS option.

  • Sono presenti trigger e l'opzione FIRE_TRIGGER non è specificata.Triggers exist and the FIRE_TRIGGER option is not specified.

    Nota

    Per impostazione predefinita, i trigger non sono attivati.By default, triggers are not fired. Per attivare i trigger in modo esplicito, utilizzare l'opzione FIRE_TRIGGERS.To fire triggers explicitly, use the FIRE_TRIGGER option.

  • Si utilizza l'opzione KEEPIDENTITY per importare valori Identity dal file di dati.You use the KEEPIDENTITY option to import identity value from data file.

EsempiExamples

A.A. Utilizzo di barre verticali per l'importazione di dati da un fileUsing pipes to import data from a file

Nell'esempio seguente vengono importate informazioni dettagliate sugli ordini nella tabella AdventureWorks2012.Sales.SalesOrderDetail dal file di dati specificato, utilizzando una barra verticale (|) come carattere di terminazione del campo e la combinazione |\n come carattere di terminazione della riga.The following example imports order detail information into the AdventureWorks2012.Sales.SalesOrderDetail table from the specified data file by using a pipe (|) as the field terminator and |\n as the row terminator.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH   
      (  
         FIELDTERMINATOR =' |',  
         ROWTERMINATOR =' |\n'  
      );  

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

B.B. Utilizzo dell'argomento FIRE_TRIGGERSUsing the FIRE_TRIGGERS argument

Nell'esempio seguente viene specificato l'argomento FIRE_TRIGGERS.The following example specifies the FIRE_TRIGGERS argument.

BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
   FROM 'f:\orders\lineitem.tbl'  
   WITH  
     (  
        FIELDTERMINATOR =' |',  
        ROWTERMINATOR = ':\n',  
        FIRE_TRIGGERS  
      );  

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

C.C. Utilizzo del carattere di avanzamento riga come carattere di terminazione della rigaUsing line feed as a row terminator

Nell'esempio seguente viene importato un file che utilizza il carattere di avanzamento riga come carattere di terminazione della riga, come nel caso di output UNIX:The following example imports a file that uses the line feed as a row terminator such as a UNIX output:

DECLARE @bulk_cmd varchar(1000);  
SET @bulk_cmd = 'BULK INSERT AdventureWorks2012.Sales.SalesOrderDetail  
FROM ''<drive>:\<path>\<filename>''   
WITH (ROWTERMINATOR = '''+CHAR(10)+''')';  
EXEC(@bulk_cmd);  

Nota

A causa della modalità di gestione dei file di testo in Microsoft Windows, (\n viene automaticamente sostituito con \r\n).Due to how Microsoft Windows treats text files (\n automatically gets replaced with \r\n).

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

D.D. Definizione di una tabella codiciSpecifying a code page

L'esempio seguente illustra come specificare una tabella codici.The following example show how to specify a code page.

BULK INSERT MyTable  
FROM 'D:\data.csv'  
WITH  
( CODEPAGE = '65001',  
    DATAFILETYPE = 'char',  
    FIELDTERMINATOR = ','  
);  

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

E.E. Importazione di dati da un file CSVImporting data from a CSV file

L'esempio seguente illustra come specificare un file CSV.The following example show how to specify a CSV file.

BULK INSERT Sales.Invoices
FROM '\\share\invoices\inv-2016-07-25.csv'
WITH (FORMAT = 'CSV'); 

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

F.F. Importazione di dati da un file nell'archiviazione BLOB di AzureImporting data from a file in Azure blob storage

L'esempio seguente illustra come caricare dati da un file csv in una posizione di archiviazione BLOB di Azure configurata come origine dati esterna.The following example shows how to load data from a csv file in an Azure blob storage location, which has been configured as an external data source. Ciò richiede credenziali con ambito database tramite una firma di accesso condiviso.This requires a database scoped credential using a shared access signature.

BULK INSERT Sales.Invoices
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
     FORMAT = 'CSV'); 

Importante

Il database SQL di Azure non supporta la lettura da file di Windows.Azure SQL Database does not support reading from Windows files.

G.G. Importazione di dati da un file nell'archiviazione BLOB di Azure e specifica di un file degli erroriImporting data from a file in Azure blob storage and specifying an error file

L'esempio seguente illustra come caricare dati da un file csv in una posizione di archiviazione BLOB di Azure configurata come origine dati esterna e come specificare un file degli errori.The following example shows how to load data from a csv file in an Azure blob storage location, which has been configured as an external data source and also specifying an error file. Ciò richiede credenziali con ambito database tramite una firma di accesso condiviso.This requires a database scoped credential using a shared access signature. Si noti che, se in esecuzione nel database SQL di Azure, l'opzione ERRORFILE deve essere accompagnata da ERRORFILE_DATA_SOURCE. In caso contrario l'importazione potrebbe non riuscire con un messaggio di errore relativo alle autorizzazioni.Note that if running on Azure SQL Database, ERRORFILE option should be accompanied by ERRORFILE_DATA_SOURCE otherwise the import might fail with permissions error. Il file specificato in ERRORFILE non deve esistere nel contenitore.The file specified in ERRORFILE should not exist in the container.

BULK INSERT Sales.Invoices
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
     FORMAT = 'CSV',
     ERRORFILE = 'MyErrorFile',
     ERRORFILE_DATA_SOURCE = 'MyAzureInvoices'); 

Per esempi di BULK INSERT completi che includono la configurazione di credenziali e di un'origine dati esterna, vedere Esempi di accesso bulk ai dati nell'archiviazione BLOB di Azure.For complete BULK INSERT examples including configuring the credential and external data source, see Examples of Bulk Access to Data in Azure Blob Storage.

Esempi aggiuntiviAdditional Examples

Altri esempi relativi a BULK INSERT sono disponibili negli argomenti seguenti:Other BULK INSERT examples are provided in the following topics:

Vedere ancheSee Also

Informazioni sull'importazione ed esportazione bulk di dati (SQL Server) Bulk Import and Export of Data (SQL Server)
Utilità bcp bcp Utility
File di formato per l'importazione o l'esportazione di dati (SQL Server) Format Files for Importing or Exporting Data (SQL Server)
INSERT (Transact-SQL) INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Preparare i dati per l'importazione o l'esportazione bulk (SQL Server) Prepare Data for Bulk Export or Import (SQL Server)
sp_tableoption (Transact-SQL)sp_tableoption (Transact-SQL)