Preparazione dei dati per l'importazione o l'esportazione bulk (SQL Server)Prepare Data for Bulk Export or Import (SQL Server)

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

In questa sezione vengono illustrati i fattori da considerare nella pianificazione di operazioni di esportazione bulk, nonché i requisiti per le operazioni di importazione bulk.This section discusses the considerations involved in planning for bulk-export operations and the requirements for bulk-import operations.

Nota

In caso di dubbio riguardo alla formattazione da applicare a un file di dati per l'importazione in blocco, usare l'utilità bcp per esportare i dati dalla tabella in un file di dati.If you are uncertain about how to format a data file for bulk importing, use the bcp utility to export data from the table into a data file. La formattazione applicata a ogni campo dati di questo file indica la formattazione necessaria per l'importazione bulk dei dati nella colonna della tabella corrispondente.The formatting of each data field in this file shows the formatting required to bulk import data into the corresponding table column. Usare la stessa formattazione per i campi del file di dati da importare.Use the same data formatting for fields of your data file.

Considerazioni sul formato dei file di dati per l'esportazione bulkData-File Format Considerations for Bulk Export

Prima di eseguire un'operazione di esportazione in blocco usando il comando bcp , tenere presente quanto segue:Before you perform a bulk-export operation by using the bcp command, consider the following:

  • Quando si esportano dati in un file, il comando bcp crea automaticamente il file di dati utilizzando il nome di file specificato.When data is exported to a file, the bcp command creates the data file automatically by using the specified file name. Se tale nome è già usato, il contenuto esistente del file di dati verrà sovrascritto con i dati di cui si intende eseguire la copia bulk.If that file name is already in use, the data that is being bulk copied to the data file overwrites the existing contents of the file.

  • Per eseguire l'esportazione bulk da una tabella o da una vista in un file di dati, è necessario disporre dell'autorizzazione SELECT per la tabella o la vista da copiare.Bulk export from a table or view to a data file requires SELECT permission on the table or view that is being bulk copied.

  • MicrosoftMicrosoft SQL ServerSQL Server può usare analisi parallele per recuperare i dati. can use parallel scans to retrieve data. Pertanto in generale non c'è nessuna garanzia che le righe della tabella di cui si esegue l'esportazione bulk da un'istanza di SQL ServerSQL Server siano riportate in un determinato ordine nel file di dati.Therefore, the table rows that are bulk exported in from an instance of SQL ServerSQL Server are not ordinarily guaranteed to be in any specific order in the data file. Per far sì che le righe della tabella siano disposte in un ordine specifico nel file di dati, usare l'opzione queryout per eseguire l'esportazione in blocco da una query e specificare una clausola ORDER BY.To make bulk-exported table rows appear in a specific order in the data file, use the queryout option to bulk export from a query, and specify an ORDER BY clause.

Requisiti relativi al formato dei file di dati per l'importazione bulkData-File Format Requirements for Bulk Import

Per importare dati da un file di dati, il file deve soddisfare i requisiti di base seguenti:To import data from a data file, the file must meet the following basic requirements:

  • È necessario che i dati siano disposti in righe e colonne.The data must be in row and column format.

Nota

Non è necessario che la struttura del file di dati corrisponda esattamente alla struttura della tabella SQL ServerSQL Server , in quanto è possibile ignorare o riordinare le colonne durante il processo di importazione bulk.The structure of the data file does not need to be identical to the structure of the SQL ServerSQL Server table because columns can be skipped or reordered during the bulk-import process.

  • È necessario che il file di dati sia in un formato supportato, ad esempio carattere o nativo.The data in the data file must be in a supported format such as character or native format.

  • Per i dati è possibile usare il formato carattere o binario nativo, incluso Unicode.The data can be in character or native binary format including Unicode.

  • Per importare dati usando un comando bcp, un'istruzione BULK INSERT o un'istruzione INSERT... SELECT * FROM OPENROWSET(BULK...), è necessario che la tabella di destinazione sia già presente.To import data by using a bcp command, BULK INSERT statement, or INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, the destination table must already exist.

  • È necessario che ogni campo del file di dati sia compatibile con la colonna corrispondente della tabella di destinazione.Each field in the data file must be compatible with the corresponding column in the target table. Non è ad esempio possibile caricare un campo int in una colonna datetime .For example, an int field cannot be loaded into a datetime column. Per altre informazioni, vedere Formati di dati per l'importazione o l'esportazione in blocco (SQL Server) e Specificare i formati di dati per la compatibilità con bcp (SQL Server).For more information, see Data Formats for Bulk Import or Bulk Export (SQL Server) and Specify Data Formats for Compatibility when Using bcp (SQL Server).

    Nota

    Per specificare un subset di righe da importare da un file di dati anziché l'intero file, è possibile usare un comando bcp con l'opzione -F first_row e/o l'opzione -L last_row.To specify a subset of rows to import from a data file rather than the entire file, you can use a bcp command with the -F first_row switch and/or -L last_row switch. Per altre informazioni, vedere bcp Utility.For more information, see bcp Utility.

  • Per importare dati da file di dati con campi a lunghezza o a larghezza fissa, usare un file di formato.To import data from data files with fixed-length or fixed-width fields, use a format file. Per altre informazioni, vedere File in formato XML (SQL Server).For more information, see XML Format Files (SQL Server).

  • I file con valori delimitati da virgole (CSV) non sono supportati nelle operazioni di importazione bulk di SQL ServerSQL Server.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. Si noti che il carattere di terminazione del campo di un file CSV non può essere una virgola.Note that the field terminator of a CSV file does not have to be a comma. Per poter essere usato come file di dati per l'importazione bulk, un file CSV deve essere conforme alle restrizioni seguenti:To be usable as a data file for bulk import, a CSV file must comply with the following restrictions:

    • I campi dati non possono mai contenere il carattere di terminazione del campo.Data fields never contain the field terminator.

    • Nessuno o tutti i valori in un campo dati sono racchiusi tra virgolette ("").Either none or all of the values in a data field are enclosed in quotation marks ("").

      Per eseguire un'importazione bulk di dati da un file di tabella di MicrosoftMicrosoft FoxPro o Visual FoxPro (con estensione dbf) o da un foglio di lavoro di Microsoft ExcelMicrosoft Excel (con estensione xls), è necessario convertire i dati in un file CSV conforme alle restrizioni precedenti.To bulk import data from a MicrosoftMicrosoft FoxPro or Visual FoxPro table (.dbf) file or a Microsoft ExcelMicrosoft Excel worksheet (.xls) file, you would need to convert the data into a CSV file that complies to the preceding restrictions. L'estensione del file è in genere csv.The file extension will typically be .csv. È quindi possibile usare il file con estensione csv come file di dati in un'operazione di importazione bulk di SQL ServerSQL Server .You can then use the .csv file as a data file in a SQL ServerSQL Server bulk-import operation.

      Nei sistemi a 32 bit è possibile importare dati CSV in una tabella di SQL ServerSQL Server senza operazioni di ottimizzazione dell'importazione in blocco usando OPENROWSET con il provider OLE DB per Jet.On 32-bit systems, it is possible to import CSV data into a SQL ServerSQL Server table without bulk-import optimizations by using OPENROWSET with the OLE DB Provider for Jet. In Jet i file di testo vengono considerati tabelle il cui schema è definito dal file schema.ini, che si trova nella stessa directory dell'origine dati.Jet treats text files as tables, with the schema defined by a schema.ini file that is located in the same directory as the data source. Per i dati CSV, uno dei parametri nel file schema.ini sarà "FORMAT=CSVDelimited".For a CSV data, one of the parameters in the schema.ini file would be "FORMAT=CSVDelimited". Per usare questa soluzione, è necessario acquisire familiarità con le operazioni di Jet Test IISAMm, ovvero la sintassi della relativa stringa di connessione, l'utilizzo del file schema.ini, le opzioni di impostazione del Registro di sistema e così via.To use this solution, you would need to understand how the Jet Test IISAMm operations—its connection string syntax, schema.ini usage, registry setting options, and so on). Le origini migliori per tali informazioni sono costituite dalla Guida di Microsoft Access e dagli articoli della Knowledge Base (KB).The best sources of this information are Microsoft Access Help and Knowledge Base (KB) articles. Per altre informazioni, vedere Inizializzazione del driver origine dati di testo, Come usare una query distribuita di SQL Server 7.0 con un server collegato a database di Access protetti, PROCEDURA: Usare il provider OLE DB Jet 4.0 per la connessione a database ISAMe Come aprire file di testo delimitati mediante IIsam di testo del provider Jet.For more information, see Initializing the Text Data Source Driver, How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases, HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases, and How To Open Delimited Text Files Using the Jet Provider's Text IIsam.

    Per l'importazione bulk di dati da un file a una tabella devono inoltre verificarsi le condizioni seguenti:In addition, the bulk import of data from a data file into a table requires the following:

  • Gli utenti devono disporre delle autorizzazioni INSERT e SELECT per la tabella,Users must have INSERT and SELECT permissions on the table. nonché dell'autorizzazione ALTER TABLE quando usano opzioni che prevedono operazioni DDL (Data Definition Language), quali la disabilitazione di vincoli.Users also need ALTER TABLE permission when they use options that require data definition language (DDL) operations, such as disabling constraints.

  • Quando si esegue l'importazione bulk di dati tramite BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...), il file di dati deve risultare accessibile per le operazioni di lettura eseguite dal profilo di sicurezza del processo SQL ServerSQL Server (se l'utente esegue l'accesso usando l'account di accesso SQL ServerSQL Server disponibile) oppure dall'account di accesso di MicrosoftMicrosoft Windows usato con delega della sicurezza.When you bulk import data by using BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...), the data file must be accessible for read operations by either the security profile of the SQL ServerSQL Server process (if the user logs in using SQL ServerSQL Server provided login) or by the MicrosoftMicrosoft Windows login that is used under delegated security. Per leggere il file, l'utente deve inoltre disporre dell'autorizzazione ADMINISTER BULK OPERATIONS.Additionally, the user must have ADMINISTER BULK OPERATIONS permission to read the file.

Nota

L'importazione bulk in una vista partizionata non è supportata e avrà pertanto esito negativo.Bulk importing into a partitioned view is unsupported, and attempts to bulk import data into a partitioned view fail.

Risorse esterneExternal Resources

Come importare dati da Excel a SQL ServerHow to import data from Excel to SQL Server

Cronologia modificheChange History

Contenuto aggiornatoUpdated content
Aggiunta di informazioni sull'utilizzo del provider OLE DB per Jet per importare dati CSV.Added information about using the OLE DB Provider for Jet to import CSV data.

Vedere ancheSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
Tipi di dati (Transact-SQL) Data Types (Transact-SQL)
Usare il formato carattere per importare o esportare dati (SQL Server) Use Character Format to Import or Export Data (SQL Server)
Usare il formato nativo per importare o esportare dati (SQL Server) Use Native Format to Import or Export Data (SQL Server)