Utilità bcp

Data aggiornamento: 12 dicembre 2006

L'utilità bcp esegue operazioni di copia di massa di dati tra un'istanza di Microsoft SQL Server 2005 e un file di dati in un formato specificato dall'utente. L'utilità bcp può essere utilizzata per importare un numero elevato di nuove righe nelle tabelle di SQL Server oppure per esportare dati dalle tabelle in file di dati. Ad eccezione del caso in cui venga utilizzata con l'opzione queryout, l'utilità non richiede alcuna conoscenza di Transact-SQL. Per importare dati in una tabella, è necessario utilizzare un file di formato creato per la tabella specifica oppure conoscere approfonditamente la struttura della tabella e i tipi di dati validi per le relative colonne.

Icona di collegamento a un argomento Per le convenzioni della sintassi per bcp, vedere Utilità della riga di comando.

Sintassi

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-mmax_errors] [-fformat_file] [-x] [-eerr_file]
    [-Ffirst_row] [-Llast_row] [-bbatch_size]
    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6] 
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] 
    [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
    [-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Argomenti

  • database_name
    Nome del database in cui si trova la tabella o la vista specificata. Se omesso, è il database predefinito per l'utente.
  • owner
    Nome del proprietario della tabella o della vista. L'argomento owner è facoltativo se l'utente che esegue l'operazione è il proprietario della tabella o della vista specificata. Se si omette l'argomento owner e l'utente che esegue l'operazione non è il proprietario della tabella o della vista specificata, SQL Server 2005 restituisce un messaggio di errore e l'operazione viene annullata.
  • table_name
    Nome della tabella di destinazione per l'importazione di dati in SQL Server (in) e di quella di origine per l'esportazione di dati da SQL Server (out).
  • view_name
    Nome della vista di destinazione per la copia di dati in SQL Server (in) e di quella di origine per la copia di dati da SQL Server (out). È possibile utilizzare come viste di destinazione solo quelle in cui tutte le colonne si riferiscono alla stessa tabella. Per ulteriori informazioni sulle restrizioni per la copia di dati nelle viste, vedere INSERT (Transact-SQL).
  • "query"
    Query Transact-SQL che restituisce un set di risultati. Se la query restituisce più set di risultati, come nel caso di un'istruzione SELECT che specifica una clausola COMPUTE, nel file di dati viene copiato solo il primo set di risultati, mentre quelli successivi vengono ignorati. Racchiudere la query tra virgolette doppie e utilizzare le virgolette singole per tutti gli altri elementi inclusi nella query. Per operazioni di copia di massa dei dati da una query, è necessario specificare anche l'argomento queryout.
  • in | out | queryout | format
    Specifica la direzione dell'operazione di copia di massa nel modo di seguito descritto.

    • in esegue la copia da un file in una tabella o in una vista del database.

      [!NOTA] L'utilità bcp inclusa con SQL Server 6.5 non supporta la copia di massa in tabelle contenenti i tipi di dati sql_variant o bigint.

    • out esegue la copia da una tabella o da una vista del database in un file. Durante l'estrazione di dati, si noti che l'utilità bcp rappresenta una stringa vuota come Null e una stringa Null come una stringa vuota.

    • queryout esegue la copia da una query. Questo argomento deve essere specificato solo nel caso di operazioni di copia di massa di dati da una query.

    • format crea un file di formato in base all'opzione specificata (-n, -c, -w, -6 o -N) e ai delimitatori della tabella o della vista. Durante l'esecuzione di un'operazione di copia di massa di dati, assieme al comando bcp è possibile utilizzare un file di formato. Grazie a questo tipo di file non sarà necessario di immettere nuovamente le informazioni sul formato in modo interattivo. L'opzione format richiede l'utilizzo dell'opzione -f. Se si crea un file di formato XML, sarà necessario specificare anche l'opzione -x. Per ulteriori informazioni, vedere Creazione di un file di formato.

  • data_file
    Percorso completo del file di dati. Quando si esegue un'importazione di massa di dati in SQL Server, il file di dati include i dati da copiare nella tabella o nella vista specificata. Quando si esegue un'esportazione di massa di dati da SQL Server, il file di dati include i dati copiati dalla tabella o dalla vista. Il percorso può essere composto da 1 a 255 caratteri. Il file di dati può contenere un massimo di 2.147.483.647 righe.

    ms162802.note(it-it,SQL.90).gifImportante:
    Per l'opzione format è necessario specificare nul come valore di data_file (formatnul).
  • -mmax_errors
    Specifica il numero massimo di errori di sintassi che si possono verificare prima dell'annullamento dell'operazione di bcp. Un errore di sintassi comporta un errore di conversione dei dati nel tipo di dati di destinazione. Nel valore totale restituito da max_errors sono esclusi gli errori che possono essere rilevati solo a livello del server, ad esempio le violazioni dei vincoli.

    Una riga che bcp non è in grado di copiare viene ignorata e conteggiata come errore. Se l'opzione viene omessa, il valore predefinito è 10.

    [!NOTA] L'opzione -m non è inoltre valida per la conversione dei tipi di dati money o bigint.

  • -fformat_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 l'opzione -f viene utilizzata con l'opzione format, per la tabella o la vista specificata verrà creato il file di formato specificato da format_file. Per creare un file di formato XML, è inoltre necessario specificare l'opzione -x. Per ulteriori informazioni, vedere Creazione di un file di formato.

    • Se utilizzata con l'opzione in o out, l'opzione -f richiede un file di formato esistente.

      [!NOTA] L'utilizzo di un file di formato con l'opzione in o out è facoltativo. Se non si specifica l'opzione -f e se si omette -n, -c, -w, -6 o -N, il comando richiede l'immissione di informazioni sullo stato e consente di memorizzare le risposte in un file di formato, il cui nome predefinito è Bcp.fmt.

  • -x
    Se utilizzato con le opzioni format e -fformat_file, genera un file di formato basato su XML anziché un file di formato predefinito non XML. L'argomento -x non funziona durante l'importazione o l'esportazione di dati e genera un errore se viene utilizzato senza gli argomenti format e -fformat_file.

    [!NOTA] Per utilizzare l'opzione -x, è necessario disporre di un client bcp 9.0. Per informazioni sull'utilizzo del client bcp 9.0, vedere la sezione "Osservazioni" di seguito in questo argomento.

  • -eerr_file
    Specifica il percorso completo del file di errori utilizzato 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 visualizzati nella workstation dell'utente. Se tale opzione non viene utilizzata, non viene creato alcun file di errori.
  • -Ffirst_row
    Specifica il numero della prima riga da esportare da una tabella o da importare da un file di dati. Per questo parametro è necessario specificare un valore maggiore di (>) 0 ma minore di (<) o uguale (=) al numero totale di righe. Se non si specifica questo parametro, l'impostazione predefinita è la prima riga del file.
  • -Llast_row
    Specifica il numero dell'ultima riga da esportare da una tabella o da importare da un file di dati. Per questo parametro è necessario specificare un valore maggiore di (>) 0 ma minore di (<) o uguale (=) al numero dell'ultima riga. Se non si specifica questo parametro, l'impostazione predefinita è l'ultima riga del file.
  • -bbatch_size
    Specifica il numero di righe per ogni batch di dati importati. Ogni batch viene importato e registrato come una transazione separata che importa l'intero batch prima di eseguire il commit. Per impostazione predefinita, tutte le righe incluse nel file di dati vengono importate 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 ha esito negativo, viene eseguito il rollback solo per gli inserimenti dal batch corrente. I batch già importati dalle transazioni per le quali è stato eseguito il commit non saranno interessati da esiti negativi successivi.

    Non utilizzare questa opzione in combinazione con l'opzione **h"**ROWS_PER_BATCH =bb".

    Per ulteriori informazioni, vedere Gestione dei batch per l'importazione di massa.

  • -c
    Esegue l'operazione utilizzando un tipo di dati carattere. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma viene utilizzato il tipo di archiviazione char senza prefissi e con il carattere di tabulazione \t come separatore di campo e il carattere di nuova riga \r\n come carattere di terminazione della riga.

    Per ulteriori informazioni, vedere Importazione ed esportazione di dati in base al formato carattere.

  • -N
    Esegue l'operazione di copia di massa utilizzando i tipi di dati nativi del database per i dati di tipo diverso da carattere e i caratteri Unicode per i dati di tipo carattere. Questa opzione è un'alternativa, con migliori prestazioni, dell'opzione -w ed è destinata al trasferimento dei dati tra istanze di SQL Server tramite un file di dati. Non viene visualizzata una richiesta per ogni campo. Questa opzione consente il trasferimento dei dati con caratteri ANSI estesi pur mantenendo tutti i vantaggi delle prestazioni della modalità nativa. L'opzione opzione -N non può essere utilizzata con SQL Server 6.5 o versioni precedenti.

    Per ulteriori informazioni, vedere Utilizzo del formato Unicode nativo per importare o esportare dati.

  • -w
    Esegue l'operazione di copia di massa utilizzando i caratteri Unicode. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma vengono utilizzati il tipo di archiviazione nchar, il carattere di tabulazione \t come separatore dei campi e il carattere di nuova riga \n come carattere di terminazione della riga e non vengono utilizzati i prefissi. Questa opzione non può essere utilizzata con SQL Server 6.5 o versioni precedenti.

    Per ulteriori informazioni, vedere Utilizzo del formato carattere Unicode per l'importazione o l'esportazione di dati.

  • -V ( 60| 65| 70| 80)
    Esegue l'operazione di copia di massa utilizzando i tipi di dati di una precedente versione di SQL Server. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma vengono utilizzati i valori predefiniti. Ad esempio, per eseguire in SQL Server 2005 una copia di massa dei formati di data supportati dall'utilità bcp fornita con SQL Server 6.5, ma non più supportati da ODBC, utilizzare il parametro -V65.

    ms162802.note(it-it,SQL.90).gifImportante:
    Quando viene eseguita un'esportazione di massa di dati da SQL Server in un file di dati, l'utilità bcp non genera formati di dati di SQL Server 6.0 o SQL Server 6.5 per i dati datetime o smalldatetime, anche se si specifica l'opzione -V. Le date vengono sempre scritte in formato ODBC. I valori Null nelle colonne di tipo bit vengono inoltre scritti come valori 0 perché in SQL Server 6.5 o versioni precedenti i valori Null per le colonne bit non sono supportati.

    Per ulteriori informazioni, vedere Importazione di dati in formato nativo e carattere da versioni precedenti di SQL Server.

  • -6
    Esegue l'operazione di copia di massa utilizzando i tipi di dati di SQL Server 6.0 o SQL Server 6.5. Questa opzione è supportata solo per compatibilità con le versioni precedenti. Per SQL Server 7 e versioni successive, utilizzare invece l'opzione -V.
  • -q
    Esegue l'istruzione SET QUOTED_IDENTIFIERS ON durante la 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 semplice. Racchiudere tra virgolette doppie (" ") l'intero nome in tre parti della tabella o della vista.

    Per specificare il nome di un database che include uno spazio o una virgoletta singola, utilizzare l'opzione –q.

    Per ulteriori informazioni, vedere la sezione Osservazioni di seguito in questo argomento.

  • -C { ACP | OEM | RAW | code_page }
    Supportato per compatibilità con le versioni precedenti di SQL Server. Per SQL Server 7.0 e versioni successive, Microsoft consiglia di specificare un nome delle regole di confronto per ogni colonna in un file di formato.

    Specifica la tabella codici per i dati nel file di dati. code_page è significativo solo se i dati includono colonne di tipo char, varchar o text con valori dei caratteri maggiori di 127 o minori di 32.

    Valore tabella codici Descrizione

    ACP

    ANSI/MicrosoftWindows (ISO 1252).

    OEM

    Tabella codici predefinita utilizzata dal client. Questa è tabella codici predefinita se non si specifica -C.

    RAW

    Non vengono eseguite conversioni tra tabelle codici. Per questo motivo, è l'opzione più rapida.

    code_page

    Numero di tabella codici specifico, ad esempio 850.

    Per ulteriori informazioni, vedere Copia di dati tra regole di confronto diverse.

  • -tfield_term
    Specifica il carattere di terminazione del campo. Il valore predefinito è il carattere di tabulazione (\t). Utilizzare questo parametro per definire un carattere di terminazione del campo diverso da quello predefinito. Per ulteriori informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga.
  • -rrow_term
    Specifica il carattere di terminazione della riga. Il valore predefinito è il carattere di nuova riga (\n). Utilizzare questo parametro per definire un carattere di terminazione della riga diverso da quello predefinito. Per ulteriori informazioni, vedere Impostazione dei caratteri di terminazione del campo e della riga.
  • -iinput_file
    Specifica il nome di un file di risposta contenente le risposte alle domande del prompt dei comandi per ogni campo quando si esegue una copia di massa in modalità interattiva, ovvero senza specificare l'opzione -n, -c, -w, -6 o -N.
  • -ooutput_file
    Specifica il nome del file in cui viene reindirizzato l'output dal prompt dei comandi.
  • -apacket_size
    Specifica il numero di byte inviati al e dal server per ogni pacchetto di rete. È possibile impostare un'opzione di configurazione del server utilizzando SQL Server Management Studio oppure la stored procedure di sistema sp_configure. Questa opzione, tuttavia, ha la precedenza sull'opzione di configurazione del server. I valori consentiti per packet_size sono compresi tra 4096 e 65535 byte e il valore predefinito è 4096.

    Le prestazioni delle operazioni di copia di massa migliorano all'aumentare delle dimensioni del pacchetto. Se si specifica una dimensione del pacchetto superiore a quella che può essere assegnata, viene utilizzato il valore predefinito. Le statistiche sulle prestazioni generate dall'utilità bcp indicano le dimensioni del pacchetto utilizzate.

  • -Sserver_name[ **\instance_name]
    Specifica l'istanza di SQL Server alla quale connettersi. Se non si specifica alcun server, l'utilità bcp si connette all'istanza predefinita di SQL Server nel computer locale. È necessario specificare questa opzione se viene eseguito un comando bcp da un computer remoto in 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 2005, specificare server_name
    \**instance_name.
  • -Ulogin_id
    Specifica l'ID di accesso utilizzato per connettersi a SQL Server.

    ms162802.security(it-it,SQL.90).gifNota sulla protezione:
    Quando l'utilità bcp si sta connettendo a SQL Server mediante una connessione trusted utilizzando la protezione integrata, utilizzare l'opzione -T (connessione trusted) invece della combinazione user name e password.
  • -Ppassword
    Specifica la password per l'ID di accesso. Se tale opzione non viene utilizzata, il comando bcp richiede una password. Se l'opzione viene specificata alla fine del prompt dei comandi senza indicare una password, bcp utilizza la password predefinita (NULL).

    ms162802.security(it-it,SQL.90).gifNota sulla protezione:
    Non utilizzare una password vuota. Utilizzare una password complessa.

    Per nascondere la password, non specificare l'opzione -P in combinazione con l'opzione -U. Dopo aver specificato il comando bcp con l'opzione -U e le altre opzioni (non specificare -P), premere invece INVIO. A questo punto, il comando richiederà una password. Questo metodo garantisce che la password sarà nascosta durante il suo inserimento.

  • -T
    Specifica che l'utilità bcp si connette a SQL Server con una connessione trusted utilizzando la protezione integrata. Non è necessario specificare le credenziali di protezione dell'utente di rete, ovvero login_id e password. Se si omette –T, è necessario specificare le opzioni –U e –P per eseguire correttamente l'accesso.
  • -v
    Visualizza il numero di versione e informazioni sul copyright per l'utilità bcp.
  • -R
    Specifica che la copia di massa dei dati relativi a valuta, data e ora verrà eseguita in SQL Server utilizzando il formato definito per le impostazioni internazionali del computer client. Per impostazione predefinita, le impostazioni internazionali vengono ignorate.
  • -E
    Specifica che i valori Identity presenti nel file di dati importato devono essere utilizzati per la colonna Identity. Se si omette l'opzione -E, i valori Identity della colonna nel file di dati da importare vengono ignorati e SQL Server 2005 assegna automaticamente dei valori univoci in base ai valori di inizializzazione e incremento specificati durante la creazione della tabella.

    Se il file di dati non contiene valori per la colonna Identity della tabella o vista, utilizzare un file di formato per specificare che durante l'importazione di dati la colonna Identity della tabella o vista deve essere ignorata. SQL Server 2005 assegna automaticamente valori univoci alla colonna. Per ulteriori informazioni, vedere DBCC CHECKIDENT (Transact-SQL).

    L'opzione -E è caratterizzata da requisiti di autorizzazione speciali. Per ulteriori informazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.

    Per ulteriori informazioni su come mantenere i valori Identity, vedere Mantenimento dei valori Identity durante l'importazione di massa dei dati.

  • **-h"**hint[ ,... n] "
    Specifica gli hint da utilizzare per l'importazione di massa di dati in una tabella o in una vista. Non è possibile utilizzare questa opzione per la copia di massa di dati in SQL Server 6.x o versioni precedenti.

    • ORDER**(column[ASC | DESC] [,...n])**
      Tipo di ordinamento dei dati nel file di dati. Le prestazioni dell'importazione di massa risultano migliori se i dati da importare vengono ordinati in base all'indice cluster della tabella, se disponibile. Se il file di dati viene ordinato in modo diverso rispetto all'ordine di una chiave di indice cluster oppure la tabella non include un indice cluster, la clausola ORDER viene ignorata. I nomi di colonna devono corrispondere a nomi di colonna validi nella tabella di destinazione. Per impostazione predefinita, bcp parte dal presupposto che il file di dati non sia ordinato. Ai fini di un'importazione di massa ottimizzata, SQL Server convalida inoltre l'ordinamento dei dati importati.

      Per ulteriori informazioni, vedere Controllo dell'ordinamento durante l'importazione di massa di dati.

    • ROWS_PER_BATCH **=**bb
      Numero di righe di dati per batch (bb). Questo hint viene utilizzato quando si omette l'opzione -b, in modo che l'intero file di dati venga inviato al server come singola transazione. Il server ottimizza il caricamento di massa in base al valore bb. Per impostazione predefinita, il valore ROWS_PER_BATCH è sconosciuto.

      Per ulteriori informazioni, vedere Gestione dei batch per l'importazione di massa.

    • KILOBYTES_PER_BATCH **=**cc
      Numero approssimativo di kilobyte di dati per batch (cc). Per impostazione predefinita, il valore KILOBYTES_PER_BATCH è sconosciuto.

      Per ulteriori informazioni, vedere Gestione dei batch per l'importazione di massa.

    • TABLOCK
      Specifica che viene acquisito un blocco aggiornamenti di massa a livello di tabella per la durata dell'operazione di copia di massa. In caso contrario, viene acquisito un blocco a livello di riga. Questo hint migliora significativamente le prestazioni, perché mantenere attivo un blocco per la durata dell'operazione di copia di massa riduce la contesa dei blocchi per la tabella. Una tabella può essere caricata contemporaneamente da più client se non include indici e si specifica TABLOCK. Per impostazione predefinita, la modalità di blocco è determinata dall'opzione table lock on bulk load della tabella.

      Per ulteriori informazioni, vedere Controllo della modalità di blocco per l'importazione di massa.

    • CHECK_CONSTRAINTS
      Specifica che tutti i vincoli sulla tabella o vista di destinazione devono essere controllati durante l'operazione di importazione di massa. Se non si specifica l'hint CHECK_CONSTRAINTS, i vincoli CHECK e FOREIGN KEY vengono ignorati e al termine dell'operazione il vincolo sulla tabella viene contrassegnato come non trusted.

      [!NOTA] I vincoli UNIQUE, PRIMARY KEY e NOT NULL vengono sempre applicati.

      In un determinato momento sarà necessario controllare i vincoli sull'intera tabella. Se prima dell'operazione di importazione di massa la tabella non era vuota, il costo della nuova convalida del vincolo potrebbe essere superiore del costo dell'applicazione dei vincoli CHECK ai dati incrementali. È pertanto consigliabile attivare in genere il controllo dei vincoli durante un'importazione di massa incrementale.

      Una situazione in cui potrebbe essere necessario disattivare i vincoli, ovvero il funzionamento predefinito, è rappresentata dal caso in cui i dati di input contengono righe che violano i vincoli. Se i vincoli CHECK vengono disattivati, è possibile importare i dati e quindi utilizzare le istruzioni Transact-SQL per rimuovere i dati non validi.

      [!NOTA] In SQL Server 2005 l'utilità bcp esegue la convalida dei nuovi dati e i controlli dei dati che potrebbero comportare la mancata esecuzione degli script esistenti quando questi vengono eseguiti sui dati non validi inclusi in un file di dati.

      [!NOTA] L'opzione -mmax_errors non è valida per il controllo dei vincoli.

      Per ulteriori informazioni, vedere Controllo della verifica dei vincoli tramite operazioni di importazione di massa.

    • FIRE_TRIGGERS
      Questo hint, specificato unitamente all'argomento in, determina l'esecuzione dei trigger di inserimento definiti nella tabella di destinazione durante l'operazione di copia di massa. Se non si specifica FIRE_TRIGGERS, non viene eseguito alcun trigger di inserimento. FIRE_TRIGGERS viene ignorato per gli argomenti out, queryout e format.

      Per ulteriori informazioni, vedere Controllo dell'esecuzione dei trigger durante l'importazione di massa di dati.

Osservazioni

Il client bcp 9.0 viene installato al momento dell'installazione degli strumenti di Microsoft SQL Server nel sistema. In caso di installazione degli strumenti sia di SQL Server 2005 che di SQL Server 2000, a seconda del valore della variabile di ambiente PATH potrebbe venire utilizzato il client bcp precedente anziché il client bcp 9.0. La variabile di ambiente definisce il set di directory utilizzato da Windows per la ricerca di file eseguibili. Per individuare la versione in uso, eseguire il comando bcp/v al prompt dei comandi di Windows. Per informazioni sull'impostazione del percorso di comando nella variabile di ambiente PATH, vedere la Guida di Windows.

I formati di file XML sono supportati soltanto in caso di installazione degli strumenti di SQL Server in combinazione con SQL Native Client.

Per informazioni sulla posizione e sulle modalità di esecuzione dell'utilità bcp e sulle convenzioni della sintassi per le utilità della riga di comando, vedere Utilità della riga di comando.

Per informazioni sulla preparazione dei dati per le operazioni di importazione o esportazione di massa, vedere Preparazione dei dati per l'importazione o l'esportazione di massa.

Per informazioni su quando le operazioni di inserimento di righe eseguite durante l'importazione di massa vengono registrate nel log delle transazioni, vedere Prerequisiti per la registrazione minima nell'importazione di massa.

Colonne calcolate e timestamp

I valori delle colonne calcolate o timestamp nel file di dati da importare vengono ignorati e SQL Server 2005 assegna automaticamente i valori. Se il file di dati non contiene valori per le colonne calcolate o timestamp della tabella, utilizzare un file di formato per specificare che le colonne calcolate o timestamp della tabella dovranno essere ignorate durante l'importazione di dati. I valori per la colonna verranno assegnati automaticamente da SQL Server.

La copia di massa di colonne calcolate e timestamp da SQL Server a un file di dati viene eseguita con le modalità consuete.

Specifica di identificatori contenenti spazi o virgolette

Gli identificatori di SQL Server possono includere caratteri quali, ad esempio, gli spazi incorporati e le virgolette singole. Gli identificatori possono essere utilizzati nel modo descritto di seguito.

  • Quando al prompt dei comandi si specifica un identificatore o un nome di file che include uno spazio o una virgoletta singola, racchiuderlo tra virgolette doppie (" ").
    Con il comando bcp out seguente viene ad esempio creato un file di dati denominato Currency Types.dat:

    bcp AdventureWorks.Sales.Currency out "Currency Types.dat" -T -c
    
  • Per specificare un nome di database che include uno spazio o una virgoletta singola, utilizzare l'opzione q.

  • Per i nomi di proprietari, tabelle o viste contenenti spazi incorporati o virgolette singole, è possibile:

    • Specificare l'opzione -q oppure
    • Racchiudere il nome del proprietario, della tabella o della vista tra parentesi quadre ([]) all'interno di virgolette.

Convalida dei dati

In SQL Server 2005 l'utilità bcp esegue la convalida dei nuovi dati e i controlli dei dati che potrebbero comportare la mancata esecuzione degli script esistenti quando questi vengono eseguiti sui dati non validi inclusi in un file di dati. Ad esempio, l'utilità bcp verifica che:

  • La rappresentazione nativa dei tipi di dati float o real sia valida.
  • La lunghezza dei dati Unicode in byte sia pari.

Il caricamento di alcuni tipi di dati non validi di cui può essere eseguita l'importazione di massa nelle versioni precedenti di SQL Server potrebbe avere esito negativo con questa versione. Nelle versioni precedenti, l'errore viene riscontrato quando un client tenta di accedere ai dati non validi. La convalida aggiuntiva riduce il rischio di errori durante l'esecuzione delle query sui dati in seguito al caricamento di massa.

Esportazione o importazione di massa di documenti SQLXML

Per l'esportazione o l'importazione di massa di dati SQLXML, utilizzare uno dei tipi di dati seguenti nel file di formato.

Tipo di dati Effetto

SQLCHAR o SQLVARYCHAR

I dati vengono inviati nella tabella codici del client o nella tabella codici implicita delle regole di confronto. L'effetto è lo stesso che si ottiene se si specifica l'opzione -c senza specificare un file di formato.

SQLNCHAR o SQLNVARCHAR

I dati vengono inviati come Unicode. L'effetto è lo stesso che si ottiene se si specifica l'opzione -w senza specificare un file di formato.

SQLBINARY o SQLVARYBIN

I dati vengono inviati senza conversione.

Autorizzazioni

Un'operazione bcp out richiede l'autorizzazione SELECT sulla tabella di origine.

Un'operazione bcp in richiede l'autorizzazione SELECT/INSERT sulla tabella di destinazione. È inoltre richiesta l'autorizzazione ALTER TABLE se si verifica uno dei seguenti casi:

  • Sono presenti alcuni vincoli e l'hint CHECK_CONSTRAINTS non è specificato.

    [!NOTA] Per impostazione predefinita, i vincoli sono disattivati. Per attivarli in modo esplicito, utilizzare l'opzione -h con l'hint CHECK_CONSTRAINTS.

  • Sono presenti alcuni trigger e l'hint FIRE_TRIGGER non è specificato.

    [!NOTA] Per impostazione predefinita, i trigger non sono attivati. Per attivarli in modo esplicito, utilizzare l'opzione -h con l'hint FIRE_TRIGGERS.

  • È possibile utilizzare l'opzione -E per importare i valori Identity da un file di dati.

[!NOTA] Il requisito relativo all'autorizzazione ALTER TABLE sulla tabella di destinazione è una nuova caratteristica di SQL Server 2005. Questo nuovo requisito potrebbe provocare la mancata esecuzione degli script dell'utilità bcp che applicano i trigger e i controlli dei vincoli se l'account utente non dispone delle autorizzazioni ALTER TABLE per la tabella di destinazione.

Esempi

In questa sezione sono disponibili gli esempi seguenti:

  • A. Copia delle righe di tabella in un file di dati (con connessione trusted)
  • B. Copia delle righe di tabella in un file di dati (con autenticazione in modalità mista)
  • C. Copia di dati da un file a una tabella
  • D. Copia di una colonna specifica in un file di dati
  • E. Copia di una riga specifica in un file di dati
  • F. Copia di dati da una query a un file di dati
  • G. Creazione di un file di formato non XML
  • H. Creazione di un file di formato XML
  • I. Utilizzo di un file di formato per l'importazione di massa con bcp

A. Copia delle righe di tabella in un file di dati (con connessione trusted)

Nell'esempio seguente viene illustrato l'utilizzo dell'opzione out nella tabella AdventureWorks.Sales.Currency. Viene creato un file di dati denominato Currency.dat in cui vengono copiati i dati della tabella utilizzando il formato carattere. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi, digitare il comando seguente:

bcp AdventureWorks.Sales.Currency out Currency.dat -T -c

B. Copia delle righe di tabella in un file di dati (con autenticazione in modalità mista)

Nell'esempio seguente viene illustrato l'utilizzo dell'opzione out nella tabella AdventureWorks.Sales.Currency. Viene creato un file di dati denominato Currency.dat in cui vengono copiati i dati della tabella utilizzando il formato carattere.

Nell'esempio si presuppone l'utilizzo dell'autenticazione in modalità mista. Sarà pertanto necessario utilizzare l'opzione -U per specificare l'ID di accesso. A meno che non si stabilisca la connessione all'istanza predefinita di SQL Server nel computer locale, utilizzare inoltre l'opzione -S per specificare il nome del sistema e facoltativamente un nome per l'istanza.

bcp AdventureWorks.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>

Verrà richiesto di inserire la password.

C. Copia di dati da un file a una tabella

Nell'esempio seguente viene illustrato l'utilizzo dell'opzione in con il file creato nell'esempio precedente (Currency.dat). Viene innanzitutto creata una copia vuota della tabella AdventureWorks Sales.Currency, Sales.Currency2, nella quale vengono copiati i dati. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Per creare una tabella vuota, nell'editor di query digitare il comando seguente:

USE AdventureWorks;
GO
SELECT * INTO AdventureWorks.Sales.Currency2 
FROM AdventureWorks.Sales.Currency WHERE 1=2

Per eseguire la copia di massa di dati di tipo carattere nella nuova tabella, ovvero per importare i dati, al prompt dei comandi digitare il comando seguente:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -c

Per verificare la corretta esecuzione del comando, visualizzare il contenuto della tabella nell'editor di query e quindi digitare:

USE AdventureWorks;
GO
SELECT * FROM Sales.Currency2

D. Copia di una colonna specifica in un file di dati

Per copiare una colonna specifica, è possibile utilizzare l'opzione queryout. Nell'esempio seguente solo la colonna Name della tabella Sales.Currency viene copiata in un file di dati. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c

E. Copia di una riga specifica in un file di dati

Per copiare una riga specifica, è possibile utilizzare l'opzione queryout. Nell'esempio seguente solo la riga del contatto denominato Jarrod Rana viene copiata dalla tabella AdventureWorks.Person.Contact in un file di dati (Jarrod Rana.dat). Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp "SELECT * FROM AdventureWorks.Person.Contact WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c

F. Copia di dati da una query a un file di dati

Per copiare il set di risultati da un'istruzione Transact-SQL a un file di dati, utilizzare l'opzione queryout. Nell'esempio seguente vengono copiati i nomi dalla tabella AdventureWorks.Person.Contact nel file di dati Contacts.txt. I nomi saranno ordinati in base al cognome e quindi in base al nome. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp "SELECT FirstName, LastName FROM AdventureWorks.Person.Contact ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

G. Creazione di un file di formato non XML

Nell'esempio seguente viene creato un file di formato non XML denominato Currency.fmt per la tabella Sales.Currency nel database AdventureWorks. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp AdventureWorks.Sales.Currency format nul -T -c  -f Currency.fmt

Per ulteriori informazioni, vedere Informazioni sui file di formato non XML.

H. Creazione di un file di formato XML

Nell'esempio seguente viene creato un file di formato XML denominato Currency.xml per la tabella Sales.Currency nel database AdventureWorks. Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp AdventureWorks.Sales.Currency format nul -T -c -x -f Currency.xml

[!NOTA] Per utilizzare l'opzione -x, è necessario disporre di un client bcp 9.0. Per informazioni sull'utilizzo del client bcp 9.0, vedere la sezione "Osservazioni".

Per ulteriori informazioni, vedere Informazioni sui file di formato XML.

I. Utilizzo di un file di formato per l'importazione di massa con bcp

Per utilizzare un file di formato precedentemente creato per importare dati in un'istanza di SQL Server, utilizzare l'opzione -f con l'opzione in. Con il comando seguente viene ad esempio eseguita la copia di massa del contenuto di un file di dati denominato Currency.dat in una copia della tabella Sales.Currency (Sales.Currency2) utilizzando il file di formato precedentemente creato (Currency.xml). Nell'esempio si presuppone l'utilizzo dell'autenticazione di Windows e che sia disponibile una connessione trusted all'istanza del server in cui si esegue il comando bcp.

Al prompt dei comandi di Windows digitare:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -f Currency.xml

[!NOTA] I file di formato risultano particolarmente utili quando i campi dei file di dati sono diversi dalle colonne della tabella, ad esempio nel numero, nell'ordine o nei tipi di dati. Per ulteriori informazioni, vedere File di formato per l'importazione o l'esportazione di dati.

Esempi aggiuntivi

Negli argomenti seguenti sono disponibili esempi dell'utilizzo di bcp:

Cronologia delle modifiche

Versione Cronologia

12 dicembre 2006

Contenuto modificato
  • Correzione della descrizione per CHECK_CONSTRAINTS per indicare che questo hint consente di ignorare sia i vincoli CHECK che i vincoli FOREIGN KEY.

17 luglio 2006

Nuovo contenuto:
  • Aggiornamento della descrizione dell'argomento ORDER.
  • Aggiunta nella sezione "Esempi aggiuntivi" di collegamenti ad argomenti contenenti esempi relativi a bcp.

14 aprile 2006

Contenuto modificato:
  • Aggiornamento della nota nella descrizione di CHECK_CONSTRAINTS con la rimozione di FOREIGN KEY dall'elenco dei vincoli sempre applicati.
  • Aggiornamento dei requisiti per l'autorizzazione ALTER TABLE.

Vedere anche

Altre risorse

Preparazione dei dati per l'importazione o l'esportazione di massa
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Importazione di dati in parallelo tramite il blocco a livello di tabella
SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Formati di dati per l'importazione o l'esportazione
File di formato per l'importazione o l'esportazione di dati
Ottimizzazione delle prestazioni dell'importazione di massa
Informazioni sulle operazioni di importazione ed esportazione di massa
Scenari di importazione ed esportazione di massa di dati

Guida in linea e informazioni

Assistenza su SQL Server 2005