Utilizzo di file di dati e file di formato
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Il programma per la copia bulk più semplice effettua le operazioni seguenti:
Chiama bcp_init per specificare la copia bulk (impostare BCP_OUT) da una tabella o una vista a un file di dati.
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ò anche essere input per l'utilità bcp usando l'opzione /n (modalità nativa).
Per eseguire la copia bulk del set di risultati di un'istruzione Transact-SQL anziché direttamente da una tabella o vista:
Chiamare bcp_init per specificare la copia bulk, ma specificare NULL per il nome della tabella.
Chiamare bcp_control con eOption impostato su BCPHINTS e iValue impostato su un puntatore a una stringa SQLTCHAR contenente l'istruzione Transact-SQL.
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 viene creato contenente il primo set di risultati dell'istruzione Transact-SQL. La copia bulk ignora qualsiasi set di risultati dopo il primo se l'istruzione Transact-SQL genera più set di risultati.
Per creare un file di dati in cui i dati delle colonne vengono archiviati in un formato diverso da quello della tabella, chiamare bcp_columns per specificare il numero di colonne che verranno modificate, quindi chiamare bcp_colfmt per ogni colonna il cui formato si desidera modificare. Questa operazione viene eseguita dopo aver chiamato bcp_init ma prima di chiamare bcp_exec. bcp_colfmt specifica il formato in cui i dati della colonna vengono archiviati nel file di dati. Può essere usato durante la copia bulk in o in uscita. È anche possibile usare bcp_colfmt per impostare i caratteri di terminazione di riga e colonna. Ad esempio, se i dati non contengono caratteri di tabulazione, è possibile creare un file delimitato da tabulazioni usando bcp_colfmt per impostare il carattere di tabulazione come carattere di terminazione per ogni colonna.
Quando si esegue la copia bulk e si usa bcp_colfmt, è possibile creare facilmente un file di formato che descrive il file di dati creato chiamando bcp_writefmt dopo l'ultima chiamata a bcp_colfmt.
Quando si esegue la 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 opzioni, ad esempio il numero massimo di errori prima della terminazione, la riga nel file in cui avviare la copia bulk, la riga su cui arrestarsi e le dimensioni del batch.