Share via


Preparazione dei dati per l'importazione o l'esportazione bulk (SQL Server)

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.

Nota

In caso di dubbio riguardo alla formattazione da applicare a un file di dati per l'importazione bulk, è possibile utilizzare l'utilità bcp per esportare i dati dalla tabella in un file di dati. 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. Usare la stessa formattazione per i campi del file di dati da importare.

Considerazioni sul formato dei file di dati per l'esportazione bulk

Prima di eseguire un'operazione di esportazione in blocco usando il comando bcp , tenere presente quanto segue:

  • Quando si esportano dati in un file, il comando bcp crea automaticamente il file di dati utilizzando il nome di file specificato. 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.

  • 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.

  • Microsoft SQL Server può usare analisi parallele per recuperare i dati. Pertanto in generale non c'è nessuna garanzia che le righe della tabella di cui si esegue l'esportazione bulk da un'istanza di SQL Server siano riportate in un determinato ordine nel file di dati. Per essere certi che le righe della tabella siano disposte in un ordine specifico nel file di dati, utilizzare l'opzione queryout per eseguire l'esportazione bulk da una query e specificare una clausola ORDER BY.

Requisiti relativi al formato dei file di dati per l'importazione bulk

Per importare dati da un file di dati, il file deve soddisfare i requisiti di base seguenti:

  • È necessario che i dati siano disposti in righe e colonne.

Nota

Non è necessario che la struttura del file di dati corrisponda esattamente alla struttura della tabella di SQL Server, in quanto è possibile ignorare o riordinare le colonne durante il processo di importazione in blocco.

  • È necessario che il file di dati sia in un formato supportato, ad esempio carattere o nativo.

  • Per i dati è possibile usare il formato carattere o binario nativo, incluso 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.

  • È necessario che ogni campo del file di dati sia compatibile con la colonna corrispondente della tabella di destinazione. Non è ad esempio possibile caricare un campo int in una colonna datetime. 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).

    Nota

    Per specificare un subset di righe da importare da un file di dati invece dell'intero file, è possibile usare un comando bcp con l'opzione -Ffirst_row e/o l'opzione -Llast_row. Per altre informazioni, vedere bcp Utility.

  • Per importare dati da file di dati con campi a lunghezza o a larghezza fissa, è necessario usare un file di formato. Per altre informazioni, vedere File in formato XML (SQL Server).

  • I file con valori delimitati da virgole (CSV) non sono supportati nelle operazioni di importazione bulk di SQL Server. In alcuni casi, tuttavia, è possibile utilizzare un file CSV come file di dati per un'importazione bulk di dati in SQL Server. Si noti che il carattere di terminazione del campo di un file CSV non può essere una virgola. Per poter essere usato come file di dati per l'importazione bulk, un file CSV deve essere conforme alle restrizioni seguenti:

    • I campi dati non possono mai contenere il carattere di terminazione del campo.

    • Nessuno o tutti i valori in un campo dati sono racchiusi tra virgolette ("").

    Per importare in blocco i dati da un file di tabella di Microsoft FoxPro o Visual FoxPro (con estensione dbf) o da un foglio di lavoro di Microsoft Excel (con estensione xls), è necessario convertire i dati in un file CSV conforme alle restrizioni precedenti. L'estensione del file è in genere csv. È quindi possibile usare il file con estensione csv come file di dati in un'operazione di importazione in blocco di SQL Server.

    Nei sistemi a 32 bit è possibile importare dati CSV in una tabella SQL Server senza ottimizzazioni di importazione bulk usando OPENROWSET con il provider OLE DB per 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. Per i dati CSV, uno dei parametri nel file schema.ini sarà "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. Le origini migliori per tali informazioni sono costituite dalla Guida di Microsoft Access e dagli articoli della Knowledge Base (KB). Per altre informazioni, vedere Inizializzazione del driver per l'origine dati di testo, Procedura: Usare una query distribuita di SQL Server 7.0 con un server collegato ai database di Access protetti, Procedura: Usare Jet OLE DB Provider 4.0 per la connessione a database ISAM e Procedura: Aprire file con testo delimitato mediante Text IIsam di Jet Provider.

Per l'importazione bulk di dati da un file a una tabella devono inoltre verificarsi le condizioni seguenti:

  • Gli utenti devono disporre delle autorizzazioni INSERT e SELECT per la tabella, nonché dell'autorizzazione ALTER TABLE quando usano opzioni che prevedono operazioni DDL (Data Definition Language), quali la disabilitazione di vincoli.

  • Quando importano dati in blocco 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 di SQL Server (se l'utente esegue l'accesso usando l'account di accesso di SQL Server disponibile) oppure dall'account di accesso di Microsoft Windows usato con delega della sicurezza. Per leggere il file, l'utente deve inoltre disporre dell'autorizzazione ADMINISTER BULK OPERATIONS.

Nota

L'importazione bulk in una vista partizionata non è supportata e avrà pertanto esito negativo.

Risorse esterne

Come importare dati da Excel a SQL Server

Cronologia modifiche

Contenuto aggiornato
Aggiunta di informazioni sull'utilizzo del provider OLE DB per Jet per importare dati CSV.

Vedere anche

Utilità bcp
BULK INSERT (Transact-SQL)
Tipi di dati (Transact-SQL)
Usare il formato carattere per importare o esportare dati (SQL Server)
Usare il formato nativo per importare o esportare dati (SQL Server)