Utilizzo di file di dati e file di formato

Il programma per la copia bulk più semplice effettua le operazioni seguenti:

  1. Chiama bcp_init per specificare la copia bulk (impostare BCP_OUT) da una tabella o una vista a un file di dati.

  2. Chiama bcp_exec per eseguire l'operazione di copia bulk.

Poiché il file di dati viene creato in modalità nativa, i dati di tutte le colonne nella tabella o nella vista vengono archiviati nel file di dati con lo stesso formato utilizzato nel database. Il file può essere quindi oggetto di copia bulk in un server utilizzando questi stessi passaggi e impostando DB_IN anziché DB_OUT. È possibile procedere in questo modo solo se le tabelle di origine e di destinazione hanno una struttura identica. Il file di dati risultante può essere immesso anche nell'utilità bcp utilizzando l'opzione /n (modalità nativa).

Per eseguire la copia bulk dal set di risultati di un'istruzione Transact-SQL anziché direttamente da una tabella o una vista:

  1. Chiamare bcp_init per specificare la copia bulk, ma specificare NULL per il nome di tabella.

  2. Chiamare bcp_control con eOption impostato su BCPHINTS e iValue impostato su un puntatore a una stringa SQLTCHAR contenente l'istruzione Transact-SQL.

  3. Chiamare bcp_exec per eseguire l'operazione di copia bulk.

L'istruzione Transact-SQL può essere qualsiasi istruzione che genera un set di risultati. Il file di dati creato contiene il primo set di risultati dell'istruzione Transact-SQL. La copia bulk ignora qualsiasi set di risultati successivo al primo se l'istruzione Transact-SQL genera più set di risultati, ad esempio se contiene COMPUTE o COMPUTE BY.

Per creare un file di dati in cui i dati vengono archiviati in un formato diverso rispetto a quello utilizzato nella tabella, chiamare bcp_columns per specificare quante colonne verranno modificate, quindi chiamare bcp_colfmt per ogni colonna di cui si desidera modificare il formato. Questa operazione viene eseguita dopo avere chiamato bcp_init ma prima di chiamare bcp_exec. bcp_colfmt specifica il formato di archiviazione dei dati della colonna nel file di dati e può essere utilizzato quando esegue una copia bulk interna o esterna. È inoltre possibile utilizzare bcp_colfmt per impostare i caratteri di terminazione di riga e di colonna. Se, ad esempio, i dati non contengono caratteri di tabulazione, è possibile creare un file delimitato da tabulazioni utilizzando bcp_colfmt per impostare il carattere di tabulazione come carattere di terminazione per ogni colonna.

Quando si esegue una copia bulk e si utilizza bcp_colfmt, è possibile creare in modo semplice un file di formato che descriva il file di dati creato chiamando bcp_writefmt dopo l'ultima chiamata a bcp_colfmt.

Quando si esegue una copia bulk da un file di dati descritto da un file di formato, leggere il file di formato chiamando bcp_readfmt dopo bcp_init, ma prima di bcp_exec.

La funzione bcp_control controlla diverse opzioni durante la copia bulk in SQL Server da un file di dati. bcp_control imposta le opzioni, ad esempio il numero massimo di errori prima della chiusura, la riga nel file in corrispondenza della quale avviare la copia bulk, la riga in corrispondenza della quale interrompere la copia bulk e le dimensioni batch.