Preparazione dei dati per l'importazione o l'esportazione bulk

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. Utilizzare 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 bulk utilizzando 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à utilizzato, 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.

  • MicrosoftSQL Server può utilizzare scansioni 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. Per ulteriori informazioni, vedere Esportazione di dati da una query a un file di dati.

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 SQL Server, in quanto è possibile ignorare o riordinare le colonne durante il processo di importazione bulk.

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

  • Per i dati è possibile utilizzare il formato carattere o binario nativo, incluso Unicode.

  • Per importare dati utilizzando 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 ulteriori informazioni, vedere Utilizzo dei formati di dati nativo, carattere o Unicode e Impostazione dei formati di dati per la compatibilità mediante bcp.

    [!NOTA]

    Per specificare un subset di righe da importare da un file di dati anziché l'intero file, è possibile utilizzare un comando bcp con l'opzione -F first_row e/o l'opzione -L last_row. Per ulteriori informazioni, vedere Utilità bcp.

  • Per importare dati da file di dati con campi a lunghezza o a larghezza fissa, è necessario utilizzare un file di formato. Per ulteriori informazioni, vedere Informazioni sui file di formato XML e File di formato XML di esempio.

  • 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 utilizzato 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 eseguire un'importazione bulk di 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 utilizzare il file con estensione csv come file di dati in un'operazione di importazione bulk di SQL Server.

    Nei sistemi a 32 bit è possibile importare dati CSV in una tabella di SQL Server senza operazioni di ottimizzazione dell'importazione bulk utilizzando 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 utilizzare 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 fonti migliori per tali informazioni sono costituite dalla Guida di Microsoft Access e dagli articoli della Knowledge Base (KB). Per ulteriori informazioni, vedere Inizializzazione del driver per l'origine dati di testo, 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 e 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:

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

  • 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 protezione del processo SQL Server (se l'utente esegue l'accesso utilizzando l'account di accesso SQL Server disponibile) oppure dall'account di accesso di Microsoft Windows utilizzato con delega della protezione. 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.

Cronologia modifiche

Aggiornamento del contenuto

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