Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
L'utilità di copia bulk (bcp) copia in blocco i dati tra un'istanza di SQL Server e un file di dati in un formato specificato dall'utente.
Usare l'utilità bcp per importare un numero elevato di nuove righe nelle tabelle di SQL Server o per esportare i dati dalle tabelle nei file di dati. Ad eccezione del caso in cui venga usata conqueryout l'opzione, l'utilità non richiede alcuna conoscenza di Transact-SQL. Per importare dati in una tabella, è necessario utilizzare un file di formato creato per tale tabella oppure comprendere la struttura della tabella e i tipi di dati validi per le relative colonne.
Per altre informazioni sulla versione di bcp installata nel sistema, sui requisiti di sistema e su come ottenere bcp, vedere Scaricare e installare l'utilità bcp.
Note
I file di dati bcp non includono informazioni sullo schema o sul formato. Se si usa bcp per eseguire il backup dei dati e quindi eliminare o modificare la tabella di origine in un secondo momento, è necessaria una definizione di tabella identica o un file di formato per importare nuovamente i dati.
Per le convenzioni di sintassi usate per la sintassi bcp , vedere Transact-SQL convenzioni di sintassi (Transact-SQL).
Come usare bcp
Per informazioni su come usare bcp, inclusi i comandi di esempio, vedere Come usare l'utilità bcp.
Usare bcp in Linux e macOS
Per informazioni su come installare gli strumenti da riga di comando in macOS e Linux, vedere Installare gli strumenti da riga di comando di sqlcmd e bcp SQL Server in Linux.
Considerazioni su bcp in Linux e macOS
Il terminatore del campo è una tabulazione (
\t).Il carattere di terminazione della riga è una nuova riga (
\n).Per i trasferimenti da SQL Server a SQL Server, usare il formato nativo (
-n). Usare il formato carattere (-c) solo quando i dati si intersecano in un sistema non SQL Server o quando il file di dati non deve contenere caratteri estesi. Per altre informazioni, vedere Procedure consigliate per la modalità carattere e la modalità nativa.È necessario racchiudere tra virgolette o utilizzare un carattere di escape per una barra rovesciata (
\) in un argomento della riga di comando. Ad esempio, per specificare una nuova riga come terminatore di riga personalizzato, usare uno dei meccanismi seguenti:-r\\n-r"\n"-r'\n'
Supporto TDS 8.0
SQL Server 2025 (17.x) introduce il supporto TDS 8.0 per l'utilità bcp .
Sintassi
bcp [ database_name. ] schema. { table_name | view_name | "query" }
{ in data_file | out data_file | queryout data_file | format nul }
[ -a packet_size ]
[ -b batch_size ]
[ -c ]
[ -C { ACP | OEM | RAW | code_page } ]
[ -d database_name ]
[ -D ]
[ -e err_file ]
[ -E ]
[ -f format_file ]
[ -F first_row ]
[ -G Microsoft Entra authentication ]
[ -h"hint [ , ...n ] " ]
[ -i input_file ]
[ -k ]
[ -K application_intent ]
[ -l login_timeout ]
[ -L last_row ]
[ -m max_errors ]
[ -n ]
[ -N ]
[ -o output_file ]
[ -P password ]
[ -q ]
[ -r row_term ]
[ -R ]
[ -S [ server_name [ \instance_name ] ] ]
[ -t field_term ]
[ -T ]
[ -U login_id ]
[ -u ]
[ -v ]
[ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
[ -w ]
[ -x ]
[ -Y [ s | m | o ] ]
[ -z ]
Opzioni della riga di comando
Nella tabella seguente sono elencate le opzioni della riga di comando disponibili in bcp e i sistemi operativi supportati.
1 Richiede bcp versione 18 o successiva, fornita con SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 e versioni successive.
Modalità Oggetto e Trasferimento
database_name
Nome del database che contiene la tabella o la vista specificata. Se non si specifica questo parametro, viene usato il database predefinito per l'utente.
È inoltre possibile specificare in modo esplicito il nome del database tramite -d.
schema
Nome del proprietario della tabella o della vista. schema è facoltativo se l'utente che esegue l'operazione è il proprietario della tabella o della vista specificata. Se non si specifica lo schema e l'utente che esegue l'operazione non è proprietaria della tabella o della vista specificata, SQL Server restituisce un messaggio di errore e l'operazione viene annullata.
table_name
Nome della tabella di destinazione quando si importano dati in SQL Server (in) e della tabella di origine quando si esportano dati da SQL Server (out).
view_name
Nome della vista di destinazione quando si copiano dati in SQL Server (in) e della vista di origine quando si copiano dati da SQL Server (out). Se utilizzata come destinazione (in), una vista è supportata solo se tutte le colonne fanno riferimento alla stessa tabella. Questa restrizione non si applica quando la vista viene usata come origine (out). Per altre informazioni sulle restrizioni per la copia di dati nelle viste, vedere INSERT.
"query"
Una query Transact-SQL che restituisce un set di risultati. Se la query restituisce più set di risultati, nel file di dati viene copiato solo il primo set, mentre quelli successivi vengono ignorati. Utilizzare le virgolette doppie per racchiudere la query e le virgolette singole per qualsiasi testo incorporato nella query. È inoltre necessario specificare queryout quando si copiano in blocco i dati da una query.
La query può fare riferimento a una stored procedure a condizione che tutte le tabelle cui viene fatto riferimento nella stored procedure siano disponibili prima dell'esecuzione dell'istruzione bcp. Se, ad esempio, la stored procedure genera una tabella temporanea, l'istruzione bcp ha esito negativo poiché la tabella è disponibile solo in fase di esecuzione e non nel momento in cui viene eseguita l'istruzione. In questo caso, è opportuno inserire i risultati della stored procedure in una tabella e usare bcp per copiare i dati dalla tabella in un file di dati.
in
Copia i dati da un file nella tabella o nella vista del database. Specifica la direzione della copia in blocco.
out
Copia i dati dalla tabella o dalla vista del database in un file. Specifica la direzione della copia in blocco.
Se si specifica un file esistente, il file viene sovrascritto. Quando l'utilità bcp estrae i dati, rappresenta una stringa vuota come null e una stringa Null come stringa vuota.
data_file
Percorso completo del file di dati. Quando si importano in blocco dati in SQL Server, il file di dati contiene i dati da copiare nella tabella o nella vista specificata. Quando si esportano in blocco dati da SQL Server, il file di dati contiene i dati copiati dalla tabella o dalla vista. Il percorso può essere costituito da un numero di caratteri compreso tra 1 e 255. Il file di dati può contenere un massimo di 2^63 - 1 righe.
queryout
Copia i dati da una query e deve essere specificato solo quando si copiano in blocco dati da una query.
format
Crea un file di formato basato sull'opzione specificata (-n, -c, -w o -N) e sui delimitatori della tabella o della vista. Durante la copia bulk dei dati, il comando bcp può fare riferimento a un file di formato e si può quindi evitare di immettere nuovamente le informazioni sul formato in modo interattivo. L'opzione format richiede l'opzione -f; la creazione di un file di formato XML richiede anche l'opzione -x. Per altre informazioni, vedere Creare un file di formato con bcp (SQL Server).For more information, see Create a format file with bcp (SQL Server). È necessario specificare nul come valore (format nul).
-q
Esegue l'istruzione SET QUOTED_IDENTIFIER ON nella connessione tra l'utilità bcp e un'istanza di SQL Server. Questa opzione consente di specificare il nome di un database, di un proprietario, di una tabella o di una vista che include uno spazio o una virgoletta singola. Racchiudere l'intero nome di tabella o vista in tre parti tra virgolette ("").
Per specificare un nome di database contenente uno spazio o una virgoletta singola, utilizzare l'opzione -q.
-q non è applicabile ai valori passati a -d.
Per altre informazioni, vedere la sezione Osservazioni in questo articolo.
Connessione e autenticazione
-S [server_name[\instance_name]]
Specifica il nome dell'istanza di SQL Server a cui connettersi o, se si usa -D, un DSN.
Se non si specifica un server, l'utilità bcp si connette all'istanza predefinita di SQL Server nel computer locale. Questa opzione è necessaria quando si esegue un comando bcp da un computer remoto nella rete o in un'istanza denominata locale. Per connettersi all'istanza predefinita di SQL Server in un server, specificare solo server_name. Per connettersi a un'istanza denominata di SQL Server, specificare <server_name>\<instance_name>.
-d database_name
Specifica il database al quale connettersi. Per impostazione predefinita, bcp si connette al database predefinito. Se si specifica -d <database_name> e un nome in tre parti (database_name.schema.table, passato come primo parametro a bcp), si verifica un errore perché non è possibile specificare il nome del database due volte. Se database_name inizia con un segno meno (-) o una barra (/), non aggiungere uno spazio tra -d e il nome del database.
-U login_id
Specifica l'ID di accesso usato per connettersi a SQL Server.
-P password
Specifica la password per l'ID di accesso . Se non si usa questa opzione, il comando bcp richiede una password. Se si usa questa opzione alla fine del prompt dei comandi senza password, bcp usa la password predefinita (NULL).
Importante
Non usare una password vuota. Usare una password complessa.
Per nascondere la password, non specificare l'opzione -P in combinazione con l'opzione -U. Al contrario, dopo aver specificato bcp insieme all'opzione -U e ad altri switch (non specificare -P), premere il tasto INVIO e il prompt dei comandi chiede una password. Questo metodo garantisce che la password venga nascosta durante l'immissione.
Se la password inizia con un segno meno (-) o una barra (/), non aggiungere uno spazio tra -P e il valore password.
In Linux e macOS, se usato con l'opzione -G senza -U, -P specifica un file che contiene un token di accesso Microsoft Entra (v17.8 e versioni successive). Il file token dovrebbe essere in formato UTF-16LE (senza BOM). Per altre informazioni, vedere Eseguire l'autenticazione con Microsoft Entra ID in bcp.
-G
Si applica a: database SQL di Azure, Istanza gestita di SQL di Azure, database SQL in Microsoft Fabric, Azure Synapse Analytics e SQL Server 2022 (16.x) e versioni successive.
Questa opzione viene utilizzata dal client per specificare che l'utente è autenticato con Microsoft Entra ID. L'opzione -G richiede bcp versione 14.0.3008.27 o versioni successive. Per determinare la versione, eseguire bcp -v. Per altre informazioni, vedere Usare l'autenticazione di Microsoft Entra con il database SQL o Azure Synapse Analytics o l'autenticazione nel database SQL in Microsoft Fabric.
Per informazioni dettagliate sull'autenticazione di Microsoft Entra in bcp, vedere Eseguire l'autenticazione con Microsoft Entra ID in bcp.
-D
Indica che il valore passato all'opzione bcp -S deve essere interpretato come nome dell'origine dati (DSN).
-D può essere visualizzato ovunque nella riga di comando; l'ordinamento relativo a -S non importa.
È possibile usare un DSN per:
- Incorporare le opzioni del driver per semplificare le righe di comando.
- Applicare le opzioni del driver che non sono altrimenti accessibili dalla riga di comando, ad esempio
MultiSubnetFailover. - Proteggere le credenziali sensibili dall'essere individuabili come argomenti della riga di comando.
Per maggiori informazioni, vedere il supporto DSN in sqlcmd e bcp.
-K intento_applicazione
Dichiara il tipo di carico di lavoro dell'applicazione in caso di connessione a un server. L'unico valore consentito è ReadOnly. Se non si specifica -K, l'utilità bcp non supporta la connettività a una replica secondaria in un gruppo di disponibilità AlwaysOn. Per ulteriori informazioni, vedere Spostare il carico di lavoro di sola lettura su una replica secondaria di un gruppo di disponibilità Always On.
-l login_timeout
Specifica un timeout di accesso. L'opzione -l specifica il numero di secondi che devono trascorrere prima che si verifichi il timeout di un accesso a SQL Server quando si cerca di stabilire la connessione a un server. Il timeout di accesso predefinito è di 15 secondi. Il valore del timeout di login deve essere un numero compreso tra 0 e 65534. Se il valore specificato non è numerico o non rientra in tale intervallo, bcp genera un messaggio di errore. Il valore 0 specifica un timeout infinito.
-T
Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted che usa la sicurezza integrata. Non è necessario specificare le credenziali di sicurezza dell'utente di rete, ovvero login_ide password. Se non si specifica -T, è necessario specificare -U e -P connettersi correttamente.
Importante
Usare -T solo quando ci si connette a SQL Server con una connessione attendibile integrata in Windows. Quando ci si connette al database SQL di Azure o ad Azure Synapse Analytics, -T l'autenticazione integrata di Windows non è supportata. Per l'autenticazione di Microsoft Entra per i servizi di Azure o SQL Server 2022 (16.x) e versioni successive, usare -G (vedere Eseguire l'autenticazione con l'ID Microsoft Entra in bcp).
-Y[s|m|o]
Si applica a: bcp versione 18 e successive, fornita con SQL Server 2025 (17.x).
Specifica se le connessioni usano la crittografia TLS in rete.
-Y può essere o (per Optional), m (per Mandatory, impostazione predefinita) o s (per Strict). Se non si include -Y, -Ym (per Mandatory) è l'impostazione predefinita.
-u
Si applica a: bcp versione 18 e successive, fornita con SQL Server 2025 (17.x).
Considera attendibile il certificato del server. Se usato con l'opzione di crittografia per la connessione, abilita la crittografia usando un certificato server autofirmato.
Rappresentazione dei dati
-c
Esegue l'operazione utilizzando un tipo di dati di tipo carattere. Questa opzione non richiede un prompt per ogni campo. Usa char come tipo di archiviazione, senza prefissi e usa \t (carattere di tabulazione) come separatore di campo e \r\n (carattere di nuova riga) come carattere di terminazione della riga.
-c non è compatibile con -w.
Per altre informazioni, vedere Usare il formato carattere per importare o esportare dati (SQL Server).
Per le procedure consigliate, vedere Procedure consigliate per la modalità carattere e la modalità nativa.
-C { ACP | OEM | RAW | code_page }
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Specifica la pagina di codice dei dati nel file di dati. code_page è pertinente solo se i dati contengono colonne di tipo char, varcharo text con valori di carattere maggiori di 127 o minori di 32.
Specificare un nome delle regole di confronto per ogni colonna in un file di formato, tranne quando si desidera che l'opzione 65001 abbia la priorità rispetto alle regole di confronto o alla specifica della tabella codici.
| Valore pagina di codice | Descrizione |
|---|---|
ACP |
ANSI/Microsoft Windows (ISO 1252). |
OEM |
Tabella codici predefinita utilizzata dal client. Questa pagina codice è l'impostazione predefinita se non si specifica -C. |
RAW |
Non vengono eseguite conversioni tra tabelle codici. Questa opzione è la più veloce perché non viene eseguita alcuna conversione. |
<code_page> |
Numero di pagina di codice specifico, ad esempio 850. Le versioni precedenti a SQL Server 2016 (13.x) non supportano la tabella codici 65001 (codifica UTF-8). Le versioni a partire dalla 13 possono importare la codifica UTF-8 per le versioni precedenti di SQL Server. |
-n
Esegue l'operazione di copia bulk utilizzando i tipi di dati nativi del database. Questa opzione non richiede ogni campo. Usa i valori nativi.
Per altre informazioni, vedere Usare il formato nativo per importare o esportare dati (SQL Server).
Per le procedure consigliate, vedere Procedure consigliate per la modalità carattere e la modalità nativa.
-N
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Esegue l'operazione di copia bulk utilizzando i tipi di dati nativi del database per i dati non di tipo carattere e i caratteri Unicode per i dati di tipo carattere. Questa opzione rappresenta un'alternativa, con migliori prestazioni, all'opzione -w e può essere usata per trasferire dati tra istanze di SQL Server con un file di dati. Non viene visualizzato un prompt per ogni campo. Utilizzare questa opzione per trasferire dati contenenti caratteri ANSI estesi se si desidera sfruttare le prestazioni della modalità nativa.
Per altre informazioni, vedere Usare il formato Unicode nativo per importare o esportare dati (SQL Server).
Se si esportano e successivamente si importano i dati nello stesso schema di tabella usando bcp con -N, può essere visualizzato un avviso di troncamento se è presente una colonna contenente caratteri non Unicode a lunghezza fissa, ad esempio char(10).
Tale avviso può essere ignorato. Per evitare la visualizzazione dell'avviso, usare -n invece di -N.
-w
Esegue l'operazione di copia bulk utilizzando caratteri Unicode. Questa opzione non richiede un prompt per ogni campo. Usa nchar come tipo di archiviazione, nessun prefisso, \t (carattere di tabulazione) come separatore di campo e \n (carattere di nuova riga) come terminatore di riga.
-w non è compatibile con -c.
Per altre informazioni, vedere Usare il formato carattere Unicode per importare o esportare dati (SQL Server).For more information, see Use Unicode character format to import or export data (SQL Server).
-z
Si applica solo a: bcp (ODBC), Linux e macOS. Windows non è supportato.
Abilita il supporto dei tipi di dati vettoriali nell'utilità bcp . Questa funzionalità è attualmente disabilitata per impostazione predefinita. Se disabilitato, i dati vettoriali vengono importati o esportati come stringhe di matrice float JSON. Se abilitata e quando ci si connette a SQL Server 2025 (17.x) e versioni successive, i dati vettoriali vengono importati o esportati nel file binario vettoriale nativo.
Formattare i file
-f format_file
Specifica il percorso completo di un file di formato. Il significato di questa opzione dipende dall'ambiente in cui viene utilizzata, come descritto di seguito:
Se si usa
-fcon l'opzioneformat, viene creato il format_file specificato per la tabella o la vista specificata. Per creare un file di formato XML, è necessario specificare anche l'opzione-x. Per altre informazioni, vedere Creare un file di formato con bcp (SQL Server).For more information, see Create a format file with bcp (SQL Server).Se si usa
-fcon l'opzioneinoout, è necessario un file di formato esistente.Note
L'uso di un file di formato con l'opzione
inooutè facoltativo. Se non si specifica l'opzione-fe non si specificano-n,-c,-wo-N, il comando richiede le informazioni sul formato e consente di salvare le risposte in un file di formato. Il nome file predefinito èbcp.fmt.
Se format_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -f e il valore format_file.
-x
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Usare questa opzione con le opzioni format e -fformat_file. Genera un file di formato basato su XML anziché il file di formato non XML predefinito. L'opzione -x non funziona durante l'importazione o l'esportazione di dati. Genera un errore se viene usata senza format e -fformat_file.
Raggruppamento e prestazioni
-a packet_size
Specifica il numero di byte per pacchetto di rete che il client invia e riceve dal server. Impostare questa opzione di configurazione del server utilizzando SQL Server Management Studio o la stored procedure di sistema sp_configure. Tuttavia, è possibile eseguire l'override dell'opzione di configurazione del server su base individuale usando questa opzione.
packet_size può essere compreso tra 4.096 byte e 65.535 byte. Il valore predefinito è 4096.
L'aumento delle dimensioni del pacchetto può migliorare le prestazioni delle operazioni di copia bulk. Se si richiede un pacchetto di dimensioni maggiori, ma il server non può concederlo, viene usato il valore predefinito. Le statistiche sulle prestazioni generate dall'utilità bcp mostrano le dimensioni del pacchetto usate.
-b batch_size
Specifica il numero di righe per ogni batch di dati importati. Ogni batch viene importato e registrato come transazione distinta che importa l'intero batch prima del commit. Per impostazione predefinita, bcp importa tutte le righe nel file di dati come un unico batch. Per distribuire le righe tra più batch, specificare un valore di batch_size inferiore al numero di righe presenti nel file di dati. Se la transazione per un batch non viene completata correttamente, viene eseguito il rollback solo degli inserimenti dal batch corrente. I batch già importati dalle transazioni di cui è stato eseguito il commit non sono interessati da un errore successivo.
Il -b e l'hint -h "ROWS_PER_BATCH=<bb>" si escludono a vicenda. Usare -b quando si vuole che bcp controlli esplicitamente il batching oppure usare ROWS_PER_BATCH per suggerire all'ottimizzatore del server quando si inviano i dati come una singola transazione.
-h "suggerimenti [, ... n]"
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Specifica l'hint o gli hint da usare durante un'importazione in blocco dei dati in una tabella o in una vista.
ORDER(column [ASC | DESC] [, ...n])
Tipo di ordinamento dei dati nel file di dati. Le prestazioni di importazione bulk migliorano se i dati importati vengono ordinati in base all'indice cluster nella tabella, se presente. Se il file di dati viene ordinato in un ordine diverso, ovvero diverso dall'ordine di una chiave di indice cluster o se non è presente alcun indice cluster nella tabella, la
ORDERclausola viene ignorata. I nomi di colonna specificati devono essere nomi di colonna validi nella tabella di destinazione. Per impostazione predefinita, bcp presuppone che il file di dati non sia ordinato. Per garantire l'ottimizzazione dell'importazione bulk, SQL Server verifica inoltre che i dati importati siano ordinati.ROWS_PER_BATCH = bb
Numero di righe di dati per batch (come bb). Usato quando non si specifica
-b, con conseguente invio dell'intero file di dati al server come singola transazione. Il server ottimizza il caricamento massivo in base al valore bb. Per impostazione predefinita,ROWS_PER_BATCHè sconosciuto.KILOBYTES_PER_BATCH= cc
Numero approssimativo di kilobyte di dati per batch (come cc). Per impostazione predefinita,
KILOBYTES_PER_BATCHè sconosciuto.TABLOCK
Specifica che un blocco a livello di tabella di aggiornamento bulk viene acquisito durante l'operazione di bulkload; in caso contrario, viene acquisito un blocco a livello di riga. Questo hint migliora significativamente le prestazioni perché mantenere un lock durante l'operazione di copia in blocco riduce la contenzione del blocco nella tabella. È possibile caricare una tabella contemporaneamente da più client se la tabella non contiene indici ed
TABLOCKè specificata. Per impostazione predefinita, l'opzione di tabellatable lock on bulkloaddetermina il comportamento di blocco. Per altre informazioni, vedere sp_tableoption.Note
Se la tabella di destinazione è un indice columnstore cluster,
TABLOCKl'hint non è necessario per il caricamento da più client simultanei perché a ogni thread simultaneo viene assegnato un rowgroup separato all'interno dell'indice e ne carica i dati. Per ulteriori informazioni, consultare Panoramica sugli indici columnstore.CHECK_CONSTRAINTS
Specifica che tutti i vincoli sulla tabella o sulla vista di destinazione devono essere verificati durante l'operazione di importazione massiva. Senza l'hint
CHECK_CONSTRAINTS, gli eventualiCHECKvincoli eFOREIGN KEYvengono ignorati e dopo l'operazione il vincolo nella tabella viene contrassegnato come non attendibile.Note
UNIQUEI vincoli ,PRIMARY KEYeNOT NULLvengono sempre applicati.A un certo punto è necessario controllare i vincoli sull'intera tabella. Se la tabella non era vuota prima dell'operazione di importazione di massa, il costo della riconvalida del vincolo può superare il costo di applicare i vincoli
CHECKai dati incrementali. Pertanto, è in genere possibile abilitare il controllo dei vincoli durante un'importazione bulk incrementale.Una situazione in cui può essere necessario disabilitare i vincoli (comportamento predefinito) è rappresentata dal caso in cui i dati di input contengono righe che violano i vincoli. Disabilitando
CHECKi vincoli, è possibile importare i dati e quindi usare istruzioni Transact-SQL per rimuovere i dati non validi.Note
L'opzione
-mmax_errors non è valida per il controllo dei vincoli.FIRE_TRIGGERS
Quando si specifica questa opzione con l'argomento in , tutti i trigger di inserimento definiti nella tabella di destinazione vengono eseguiti durante l'operazione di copia bulk. Se non si specifica
FIRE_TRIGGERS, non vengono eseguiti trigger di inserimento.FIRE_TRIGGERSviene ignorato per glioutargomenti ,queryouteformat.
-m max_errors
Specifica il numero massimo di errori di sintassi che possono verificarsi prima dell'annullamento dell'operazione bcp . Un errore di sintassi implica un errore di conversione dei dati nel tipo di dati di destinazione. Il max_errors totale esclude tutti gli errori che il server può rilevare solo, ad esempio violazioni dei vincoli.
Una riga che l'utilità bcp non può copiare viene ignorata e conteggiata come un errore. Se non si include questa opzione, il valore predefinito è 10.
Note
L'opzione -m non si applica quando si convertono i tipi di dati money o Bigint .
-F prima_riga
Specifica il numero della prima riga da esportare da una tabella o da importare da un file di dati. Questo parametro richiede un valore maggiore di (>) 0 ma minore di (<) o uguale al numero totale di righe. Se non si specifica questo parametro, il valore predefinito è la prima riga del file.
first_row può essere un numero intero positivo con valore massimo pari a 2^63-1.
-F
first_row usa la numerazione basata su 1.
-L ultima_riga
Specifica il numero dell'ultima riga da esportare da una tabella o da importare da un file di dati. Questo parametro richiede un valore maggiore di (>) 0 ma minore di (<) o uguale al numero dell'ultima riga. Se non si specifica questo parametro, il valore predefinito è l'ultima riga del file.
last_row può essere un numero intero positivo con valore massimo pari a 2^63-1.
-r row_term
Specifica il terminatore di riga. Il valore predefinito è \n (carattere di nuova riga). Utilizzare questo parametro per specificare un carattere di terminazione della riga diverso da quello predefinito. Per altre informazioni, vedere Specificare caratteri di terminazione dei campi e delle righe (SQL Server).For more information, see Specify field and row terminator (SQL Server).
Se si specifica il carattere di terminazione della riga in notazione esadecimale nel comando bcp, il valore verrà troncato in corrispondenza di 0x00. Ad esempio, se si specifica 0x410041 viene usato 0x41.
Se row_term inizia con un trattino (-) o una barra (/), non includere uno spazio tra -r e il valore row_term.
-t field_term
Specifica il carattere di terminazione del campo. Il valore predefinito è \t (carattere di tabulazione). Utilizzare questo parametro per specificare un carattere di terminazione del campo diverso da quello predefinito. Per altre informazioni, vedere Specificare caratteri di terminazione dei campi e delle righe (SQL Server).For more information, see Specify field and row terminator (SQL Server).
Se si specifica il carattere di terminazione del campo in notazione esadecimale nel comando bcp, il valore verrà troncato in corrispondenza di 0x00. Ad esempio, se si specifica 0x410041 viene usato 0x41.
Se field_term inizia con un segno meno (-) o una barra (/), non inserire uno spazio tra -t e il valore field_term.
Gestione dei valori
-k
Specifica che le colonne vuote mantengono un valore Null durante l'operazione, anziché inserire valori predefiniti per le colonne. Per altre informazioni, vedere Mantenere i valori Null o i valori predefiniti durante l'importazione in blocco (SQL Server).
-E
Specifica che l'operazione utilizza i valori di identità nel file di dati importato per la colonna di identità. Se non si specifica -E, SQL Server ignora i valori Identity per questa colonna nel file di dati da importare e assegna automaticamente valori univoci in base ai valori di inizializzazione e incremento specificati durante la creazione della tabella. Per altre informazioni, vedere DBCC CHECKIDENT.
Se il file di dati non contiene valori per la colonna Identity nella tabella o nella vista, usare un file di formato per specificare che la colonna Identity nella tabella o nella vista deve essere ignorata durante l'importazione dei dati. SQL Server assegna automaticamente valori univoci per la colonna.
L'opzione -E è caratterizzata da requisiti di autorizzazione di accesso speciali. Per altre informazioni, vedere la sezione "Osservazioni" di seguito in questo articolo.
I/O e registrazione dei file
-i input_file
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Specifica il nome di un file di risposta. Il file contiene le risposte alle domande del prompt dei comandi per ogni campo dati quando si esegue un'operazione di copia bulk usando la modalità interattiva (-n, -c, -wo -N non specificato).
Se input_file inizia con un trattino (-) o una barra (/), non includere uno spazio tra -i e il valore di input_file.
-o output_file
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Specifica il nome di un file in cui viene reindirizzato l'output dal prompt dei comandi.
Se output_file inizia con un segno meno (-) o una barra diagonale (/), non includere uno spazio tra -o e il valore output_file.
-e err_file
Specifica il percorso completo di un file di errori usato per archiviare le eventuali righe che l'utilità bcp non è in grado di trasferire dal file al database. I messaggi di errore generati dal comando bcp vengono inviati alla workstation dell'utente. Se non si usa questa opzione, non viene creato un file di errore.
Se err_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -e e il valore err_file.
Compatibilità e controllo delle versioni
-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }
Si applica solo a: Solo Windows. Non supportato in Linux e macOS.
Esegue l'operazione di copia bulk utilizzando i tipi di dati di una versione precedente di SQL Server. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma vengono utilizzati i valori predefiniti.
-
80= SQL Server 2000 (8.x) -
90= SQL Server 2005 (9.x) -
100= SQL Server 2008 (10.0.x) e SQL Server 2008 R2 (10.50.x) -
110= SQL Server 2012 (11.x) -
120= SQL Server 2014 (12.x) -
130= SQL Server 2016 (13.x) -
140= SQL Server 2017 (14.x) -
150= SQL Server 2019 (15.x) -
160= SQL Server 2022 (16.x) -
170= SQL Server 2025 (17.x)
Ad esempio, per generare dati per i tipi che SQL Server 2000 (8.x) non supporta, ma sono stati introdotti nelle versioni successive, usare l'opzione -V80 .
Per altre informazioni, vedere Importare dati in formato nativo e carattere da versioni precedenti di SQL Server.
Altre opzioni
-R
Specifica che l'utilità bcp copia in blocco i dati di valuta, data e ora in SQL Server usando il formato a livello di area definito per l'impostazione delle impostazioni locali del computer client. Per impostazione predefinita, bcp ignora le impostazioni internazionali.
-v
Visualizza il numero di versione e le informazioni sul copyright per l'utilità bcp .
Osservazioni:
L'utilità bcp supporta i file di dati nativi compatibili con tutte le versioni supportate di SQL Server.
L'utilità bcp visualizza solo i primi 512 byte di un messaggio di errore.
Permissions
Un'operazione bcp out richiede SELECT l'autorizzazione sulla tabella di origine.
Un'operazione bcp in richiede, come minimo, le autorizzazioni SELECT e INSERT per la tabella di destinazione. Inoltre, ALTER TABLE l'autorizzazione è necessaria se sono soddisfatte le condizioni seguenti:
Esistono vincoli e l'hint
CHECK_CONSTRAINTSnon viene specificato.Per impostazione predefinita, i vincoli sono disabilitati. Per abilitare i vincoli in modo esplicito, usare l'opzione
-hcon l'hintCHECK_CONSTRAINTS.I trigger esistono e l'hint
FIRE_TRIGGERSnon è specificato.Per impostazione predefinita, i trigger non vengono attivati. Per attivare i trigger in modo esplicito, usare l'opzione
-hcon l'hintFIRE_TRIGGERS.Si usa l'opzione
-Eper importare valori Identity da un file dati.
Contenuti correlati
- Preparare i dati per l'importazione o l'esportazione in blocco
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- SET QUOTED_IDENTIFIER (Transact-SQL)
- sp_configure (Transact-SQL)
- sp_tableoption (Transact-SQL)
- Formattare i file per importare ed esportare i dati (SQL Server)
Ottieni aiuto
- Idee per SQL: sono disponibili suggerimenti per migliorare SQL Server?
- Domande e risposte Microsoft (SQL Server)
- DBA Stack Exchange (tag sql-server): fare domande su SQL Server
- Stack Overflow (tag sql-server): risposte a domande sullo sviluppo di SQL
- Informazioni e condizioni di licenza di Microsoft SQL Server
- Opzioni di supporto per utenti aziendali
- Ulteriore assistenza e feedback su SQL Server
Contribuire alla documentazione di SQL
Sei a conoscenza che puoi modificare tu stesso il contenuto SQL? In tal caso, non solo contribuisci a migliorare la documentazione, ma vieni anche riconosciuto come collaboratore della pagina.
Per altre informazioni, vedere Modifica la documentazione di Microsoft Learn.