Share via


Preparare i dati per l'importazione o l'esportazione bulk

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

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

Se non si è certi di come formattare un file di dati per l'importazione bulk, usare 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 di 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.

  • L'esportazione bulk da una tabella o vista in un file di dati richiede SELECT l'autorizzazione per la tabella o la vista da copiare in blocco.

  • SQL Server possibile usare analisi parallele per recuperare i dati. Di conseguenza, le righe della tabella esportate in blocco da un'istanza di SQL Server non sono in genere necessariamente in un ordine specifico nel file di dati. Per visualizzare le righe di tabella esportate in blocco in un ordine specifico nel file di dati, usare l'opzione queryout per eseguire l'esportazione bulk da una query e specificare una ORDER BY clausola .

Requisiti del formato di 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

La struttura del file di dati non deve essere identica alla struttura della tabella SQL Server perché le colonne possono essere ignorate o riordinate 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 usare il formato carattere o binario nativo, incluso Unicode.

  • Per importare dati usando un comando, BULK INSERT un'istruzione o INSERT ... SELECT * FROM OPENROWSET(BULK...) un'istruzione bcp, è necessario che la tabella di destinazione esista già.

  • È necessario che ogni campo del file di dati sia compatibile con la colonna corrispondente della tabella di destinazione. Ad esempio, un campo int non può essere caricato in una colonna datetime . Per altre informazioni, vedere Formati di dati per l'importazione o l'esportazione bulk (SQL Server) e Specificare i formati di dati di compatibilità quando si usa bcp (SQL Server).

    Nota

    Per specificare un subset di righe da importare da un file di dati anziché dall'intero file, è possibile usare un comando bcp con l'opzione e/o -L <last_row> l'opzione-F <first_row>. Per altre informazioni, vedere bcp Utility.

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

  • A partire da SQL Server 2017 (14.x), un file CSV può essere usato come file di dati per un'importazione bulk di dati in SQL Server. Il carattere di terminazione del campo di un file CSV non deve 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 dati da un file di tabella Microsoft FoxPro o Visual FoxPro (con estensione dbf) o da un file di foglio di lavoro di Microsoft Excel (.xls), è necessario convertire i dati in un file CSV conforme alle restrizioni precedenti. L'estensione del file sarà .csvin genere . È quindi possibile usare il .csv file come file di dati in un'operazione di importazione bulk SQL Server.

      Nei sistemi a 32 bit (SQL Server 2014 (12.x) e versioni precedenti, è possibile importare dati CSV in una tabella SQL Server senza ottimizzazioni di importazione bulk usando OPENROWSET con il provider OLE DB per Jet. Jet considera i file di testo come tabelle, con lo schema definito da un schema.ini file che si trova nella stessa directory dell'origine dati. Per i dati CSV, uno dei parametri nel schema.ini file sarà "FORMAT=CSVDelimited". Per usare questa soluzione, è necessario comprendere il funzionamento di IISAM Jet Text (sintassi stringa di connessione, utilizzo, schema.ini opzioni di impostazione del Registro di sistema e così via). Le migliori fonti di queste informazioni sono gli articoli della Guida di Microsoft Access e 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.

Inoltre, l'importazione bulk di dati da un file di dati in una tabella presenta i requisiti seguenti:

  • Gli utenti devono avere INSERT le autorizzazioni e SELECT per la tabella. Gli utenti necessitano anche dell'autorizzazione ALTER TABLE quando usano opzioni che richiedono operazioni DDL (Data Definition Language), ad esempio la disabilitazione dei vincoli.

  • Quando si importano dati in blocco tramite BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...), il file di dati deve essere accessibile per le operazioni di lettura dal profilo di sicurezza del processo di SQL Server (se l'utente accede usando SQL Server account di accesso fornito) o dall'account di accesso di Microsoft Windows usato con sicurezza delegata. Inoltre, l'utente deve disporre ADMINISTER BULK OPERATIONS dell'autorizzazione per leggere il file.

Nota

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