Utilità bcpbcp Utility

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Per contenuti relativi a versioni precedenti di SQL Server, vedere utilità bcp.For content related to previous versions of SQL Server, see bcp Utility.

L'utilità del programma di copia bulk (bcp) esegue operazioni di copia bulk di dati tra un'istanza di MicrosoftMicrosoft SQL ServerSQL Server e un file di dati in un formato specificato dall'utente.The bulk copy program utility (bcp) bulk copies data between an instance of MicrosoftMicrosoft SQL ServerSQL Server and a data file in a user-specified format. L'utilità bcp può essere usata per importare un numero elevato di nuove righe nelle tabelle di SQL ServerSQL Server o per esportare dati dalle tabelle in file di dati.The bcp utility can be used to import large numbers of new rows into SQL ServerSQL Server tables or to export data out of tables into data files. Ad eccezione del caso in cui venga usata con l'opzione queryout , l'utilità non richiede alcuna conoscenza di Transact-SQLTransact-SQL.Except when used with the queryout option, the utility requires no knowledge of Transact-SQLTransact-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.To import data into a table, you must either use a format file created for that table or understand the structure of the table and the types of data that are valid for its columns.

Icona di collegamento argomento per le convenzioni della sintassi utilizzata per la bcp sintassi, vedere convenzioni della sintassi Transact-SQL ( Transact-SQL ) .Topic link icon For the syntax conventions that are used for the bcp syntax, see Transact-SQL Syntax Conventions (Transact-SQL).

Nota

Se si esegue il backup dei dati con bcp , creare un file di formato per registrare il formato dei dati.If you use bcp to back up your data, create a format file to record the data format. I file di dati dibcp non includono alcuna informazione sullo schema o sul formato. Di conseguenza, se si elimina una tabella o una vista e non è disponibile un file di formato, può non essere possibile importare i dati.bcp data files do not include any schema or format information, so if a table or view is dropped and you do not have a format file, you may be unable to import the data.

SintassiSyntax
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]
    [-e err_file]
    [-E]
    [-f format_file]
    [-F first_row]
    [-h"hint [,...n]"]
    [-i input_file]
    [-k]
    [-K application_intent]
    [-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]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 ) ]
    [-w]
    [-x]

ArgomentiArguments

data_filedata_file
Percorso completo del file di dati.Is the full path of the data file. Quando si esegue un'importazione bulk dei dati in SQL ServerSQL Server, il file di dati include i dati da copiare nella tabella o nella vista specificata.When data is bulk imported into SQL ServerSQL Server, the data file contains the data to be copied into the specified table or view. Quando si esegue un'esportazione bulk dei dati da SQL ServerSQL Server, il file di dati include i dati copiati dalla tabella o dalla vista.When data is bulk exported from SQL ServerSQL Server, the data file contains the data copied from the table or view. Il percorso può essere costituito da un numero di caratteri compreso tra 1 e 255.The path can have from 1 through 255 characters. Il file di dati può contenere un massimo di 2^63 - 1 righe.The data file can contain a maximum of 2^63 - 1 rows.

database_namedatabase_name
Nome del database in cui si trova la tabella o la vista specificata.Is the name of the database in which the specified table or view resides. Se tale valore non è specificato, il database è quello predefinito dell'utente.If not specified, this is the default database for the user.

È anche possibile specificare in modo esplicito il nome del database con d-.You can also explicitly specify the database name with d-.

in data_file | out data_file | queryout data_file | format nulin data_file | out data_file | queryout data_file | format nul
Specifica la direzione della copia bulk nel modo seguente:Specifies the direction of the bulk copy, as follows:

  • in esegue la copia da un file nella tabella o nella vista del database.in copies from a file into the database table or view.

  • out esegue la copia dalla tabella o dalla vista del database in un file.out copies from the database table or view to a file. Se si specifica un file esistente, il file viene sovrascritto.If you specify an existing file, the file is overwritten. Durante l'estrazione dei dati, si noti che l'utilità bcp rappresenta una stringa vuota come Null e una stringa Null come stringa vuota.When extracting data, note that the bcp utility represents an empty string as a null and a null string as an empty string.

  • queryout esegue la copia da una query e deve essere specificata solo in caso di copia bulk di dati da una query.queryout copies from a query and must be specified only when bulk copying data from a query.

  • format crea un file di formato basato sull'opzione specificata (-n, -c, -wo -N) e sui delimitatori della tabella o della vista.format creates a format file based on the option specified (-n, -c, -w, or -N) and the table or view delimiters. 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.When bulk copying data, the bcp command can refer to a format file, which saves you from re-entering format information interactively. L'opzione format richiede l'opzione -f. Se si crea un file di formato XML, è necessaria anche l'opzione -x.The format option requires the -f option; creating an XML format file, also requires the -x option. Per altre informazioni, vedere Creare un file di formato (SQL Server).For more information, see Create a Format File (SQL Server). È necessario specificare nul come valore (format nul).You must specify nul as the value (format nul).

    ownerowner
    Nome del proprietario della tabella o della vista.Is the name of the owner of the table or view. owner è facoltativo se l'utente che esegue l'operazione è il proprietario della tabella o della vista specificata.owner is optional if the user performing the operation owns the specified table or view. Se owner non viene specificato e l'utente che esegue l'operazione non è il proprietario della tabella o della vista specificata, SQL ServerSQL Server restituisce un messaggio di errore e l'operazione viene annullata.If owner is not specified and the user performing the operation does not own the specified table or view, SQL ServerSQL Server returns an error message, and the operation is canceled.

" query " Is a Transact-SQLTransact-SQL query that returns a result set." query " Is a Transact-SQLTransact-SQL query that returns a result set. Se la query restituisce più set di risultati, nel file di dati viene copiato solo il primo set, mentre quelli successivi vengono ignorati.If the query returns multiple result sets, only the first result set is copied to the data file; subsequent result sets are ignored. Racchiudere la query tra virgolette doppie e utilizzare le virgolette singole per altri elementi inclusi nella query.Use double quotation marks around the query and single quotation marks around anything embedded in the query. L'opzionequeryout deve essere specificata solo in caso di copia bulk di dati da una query.queryout must also be specified when bulk copying data from a 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.The query can reference a stored procedure as long as all tables referenced inside the stored procedure exist prior to executing the bcp statement. 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.For example, if the stored procedure generates a temp table, the bcp statement fails because the temp table is available only at run time and not at statement execution time. 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 this case, consider inserting the results of the stored procedure into a table and then use bcp to copy the data from the table into a data file.

table_nametable_name
Nome della tabella di destinazione per l'importazione di dati in SQL ServerSQL Server (in) e della tabella di origine per l'esportazione di dati da SQL ServerSQL Server (out).Is the name of the destination table when importing data into SQL ServerSQL Server (in), and the source table when exporting data from SQL ServerSQL Server (out).

view_name view_name
Nome della vista di destinazione per la copia di dati in SQL ServerSQL Server (in) e della vista di origine per la copia di dati da SQL ServerSQL Server (out).Is the name of the destination view when copying data into SQL ServerSQL Server (in), and the source view when copying data from SQL ServerSQL Server (out). È possibile utilizzare come viste di destinazione solo quelle in cui tutte le colonne fanno riferimento alla stessa tabella.Only views in which all columns refer to the same table can be used as destination views. Per altre informazioni sulle restrizioni per la copia di dati nelle viste, vedere INSERT (Transact-SQL).For more information on the restrictions for copying data into views, see INSERT (Transact-SQL).

-a packet_size-a packet_size
Specifica il numero di byte inviati al e dal server per ogni pacchetto di rete.Specifies the number of bytes, per network packet, sent to and from the server. È possibile impostare un'opzione di configurazione del server usando SQL Server Management StudioSQL Server Management Studio o la stored procedure di sistema sp_configure .A server configuration option can be set by using SQL Server Management StudioSQL Server Management Studio (or the sp_configure system stored procedure). Questa opzione, tuttavia, ha la precedenza sull'opzione di configurazione del server.However, the server configuration option can be overridden on an individual basis by using this option. Il valore dipacket_size può essere compreso tra 4096 e 65535 byte. Il valore predefinito è 4096.packet_size can be from 4096 to 65535 bytes; the default is 4096.

Le prestazioni delle operazioni di copia bulk migliorano con l'aumentare delle dimensioni del pacchetto.Increased packet size can enhance performance of bulk-copy operations. Se è richiesta una dimensione del pacchetto maggiore di quella consentita, viene utilizzato il valore predefinito.If a larger packet is requested but cannot be granted, the default is used. Le statistiche sulle prestazioni generate dall'utilità bcp indicano le dimensioni del pacchetto in uso.The performance statistics generated by the bcp utility show the packet size used.

-b batch_size-b batch_size
Specifica il numero di righe per ogni batch di dati importati.Specifies the number of rows per batch of imported data. Ogni batch viene importato e registrato come transazione distinta che importa l'intero batch prima del commit.Each batch is imported and logged as a separate transaction that imports the whole batch before being committed. Per impostazione predefinita, tutte le righe incluse nel file di dati vengono importate come un unico batch.By default, all the rows in the data file are imported as one batch. Per distribuire le righe tra più batch, specificare un valore di batch_size inferiore al numero di righe presenti nel file di dati.To distribute the rows among multiple batches, specify a batch_size that is smaller than the number of rows in the data file. Se la transazione per un batch non viene completata correttamente, viene eseguito il rollback solo degli inserimenti dal batch corrente.If the transaction for any batch fails, only insertions from the current batch are rolled back. I batch già importati dalle transazioni di cui è stato eseguito il commit non sono influenzati in caso di esito negativo.Batches already imported by committed transactions are unaffected by a later failure.

Non usare questa opzione in combinazione con l'opzione -h "ROWS_PER_BATCH =bb" .Do not use this option in conjunction with the -h "ROWS_PER_BATCH =bb" option.

-c-c
Esegue l'operazione utilizzando un tipo di dati carattere.Performs the operation using a character data type. Questa opzione non determina la visualizzazione di una richiesta per ogni campo, ma usa char come tipo di archiviazione, 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.This option does not prompt for each field; it uses char as the storage type, without prefixes and with \t (tab character) as the field separator and \r\n (newline character) as the row terminator. -c non è compatibile con -w.-c is not compatible with -w.

Per altre informazioni, vedere Usare il formato carattere per importare o esportare dati (SQL Server).For more information, see Use Character Format to Import or Export Data (SQL Server).

-C { ACP | OEM | RAW | code_page } -C { ACP | OEM | RAW | code_page }
Specifica la tabella codici dei dati contenuti nel file di dati.Specifies the code page of the data in the data file. 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.code_page is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

Nota

È consigliabile specificare un nome regole di confronto per ogni colonna in un file di formato tranne quando si vuole assegnare all'opzione 65001 la priorità sulla specifica delle regole di confronto o della tabella codici.We recommend specifying a collation name for each column in a format file, except when you want the 65001 option to have priority over the collation/code page specification.

Valore tabella codiciCode page value DescrizioneDescription
ACPACP ANSIANSI/Microsoft Windows (ISO 1252)./Microsoft Windows (ISO 1252).
OEMOEM Tabella codici predefinita utilizzata dal client.Default code page used by the client. Si tratta della tabella codici predefinita usata se non si specifica -C .This is the default code page used if -C is not specified.
RAWRAW Non vengono eseguite conversioni tra tabelle codici.No conversion from one code page to another occurs. Per questo motivo, si tratta dell'opzione più rapida.This is the fastest option because no conversion occurs.
code_pagecode_page Numero di tabella codici specifico, ad esempio 850.Specific code page number; for example, 850.

Le versioni precedenti alla 13 ( SQL Server 2016SQL Server 2016) non supportano la tabella codici 65001 (codifica UTF-8).Versions prior to version 13 ( SQL Server 2016SQL Server 2016) do not support code page 65001 (UTF-8 encoding). Le versioni a partire dalla 13 possono importare la codifica UTF-8 per le versioni precedenti di SQL ServerSQL Server.Versions beginning with 13 can import UTF-8 encoding to earlier versions of SQL ServerSQL Server.

-d database_name -d database_name
Specifica il database al quale connettersi.Specifies the database to connect to. Per impostazione predefinita, bcp.exe si connette al database predefinito dell'utente.By default, bcp.exe connects to the user’s default database. Se si specificano -d database_name e un nome in tre parti (database_name.schema.table, passato come primo parametro di bcp.exe), viene generato un errore perché non è possibile specificare il nome del database due volte. Se database_name inizia con un trattino (-) o una barra (/), non aggiungere uno spazio tra -d e il nome del database.If -d database_name and a three part name (database_name.schema.table, passed as the first parameter to bcp.exe) is specified, an error will occur because you cannot specify the database name twice.If database_name begins with a hyphen (-) or a forward slash (/), do not add a space between -d and the database name.

-e err_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.Specifies the full path of an error file used to store any rows that the bcp utility cannot transfer from the file to the database. I messaggi di errore generati dal comando bcp vengono inviati alla workstation dell'utente.Error messages from the bcp command go to the workstation of the user. Se questa opzione non viene utilizzata, non viene creato alcun file degli errori.If this option is not used, an error file is not created.

Se err_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -e e il valore err_file .If err_file begins with a hyphen (-) or a forward slash (/), do not include a space between -e and the err_file value.

-E -E
Specifica che il valore o i valori Identity presenti nel file di dati importato devono essere usati per la colonna Identity.Specifies that identity value or values in the imported data file are to be used for the identity column. Se si omette l'opzione -E , i valori Identity della colonna nel file di dati da importare vengono ignorati e SQL ServerSQL Server assegna automaticamente valori univoci in base ai valori di inizializzazione e incremento specificati durante la creazione della tabella.If -E is not given, the identity values for this column in the data file being imported are ignored, and SQL ServerSQL Server automatically assigns unique values based on the seed and increment values specified during table creation.

Se il file di dati non contiene valori per la colonna Identity della tabella o della vista, utilizzare un file di formato per specificare che durante l'importazione di dati la colonna Identity della tabella o della vista deve essere ignorata. SQL ServerSQL Server assegna automaticamente valori univoci alla colonna.If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view should be skipped when importing data; SQL ServerSQL Server automatically assigns unique values for the column. Per altre informazioni, vedere DBCC CHECKIDENT (Transact-SQL).For more information, see DBCC CHECKIDENT (Transact-SQL).

L'opzione -E è caratterizzata da requisiti di autorizzazione speciali.The -E option has a special permissions requirement. Per altre informazioni, vedere la sezione "Osservazioni" di seguito in questo argomento.For more information, see "Remarks" later in this topic.

-f format_file-f format_file
Specifica il percorso completo di un file di formato.Specifies the full path of a format file. Il significato di questa opzione dipende dall'ambiente in cui viene utilizzata, come descritto di seguito:The meaning of this option depends on the environment in which it is used, as follows:

  • Se l'opzione -f viene usata con l'opzione format , per la tabella o per la vista indicata verrà creato il file format_file specificato.If -f is used with the format option, the specified format_file is created for the specified table or view. Per creare un file di formato XML, è necessario specificare anche l'opzione -x.To create an XML format file, also specify the -x option. Per altre informazioni, vedere Creare un file di formato (SQL Server).For more information, see Create a Format File (SQL Server).

  • Se si usa con l'opzione in o out, -f richiede un file di formato esistente.If used with the in or out option, -f requires an existing format file.

    Nota

    L'uso di un file di formato con l'opzione in o out è facoltativo.Using a format file in with the in or out option is optional. Se l'opzione -f viene omessa e non si specifica -n, -c, -wo -N , il comando richiede l'immissione di informazioni sul formato e consente di salvare le risposte in un file di formato il cui nome predefinito è Bcp.fmt.In the absence of the -f option, if -n, -c, -w, or -N is not specified, the command prompts for format information and lets you save your responses in a format file (whose default file name is Bcp.fmt).

    Se format_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -f e il valore format_file .If format_file begins with a hyphen (-) or a forward slash (/), do not include a space between -f and the format_file value.

    -F first_row-F first_row
    Specifica il numero della prima riga da esportare da una tabella o da importare da un file di dati.Specifies the number of the first row to export from a table or import from a data file. Per questo parametro è necessario specificare un valore maggiore di (>) 0, ma minore (<) o uguale (=) al numero totale di righe.This parameter requires a value greater than (>) 0 but less than (<) or equal to (=) the total number rows. Se il parametro viene omesso, l'impostazione predefinita è la prima riga del file.In the absence of this parameter, the default is the first row of the file.

    first_row può essere un numero intero positivo con valore massimo pari a 2^63-1.first_row can be a positive integer with a value up to 2^63-1. -F first_row è in base 1.-F first_row is 1-based.

-h "load hints[ ,... n ]" Specifica l'hint da utilizzare durante un'importazione bulk di dati in una tabella o vista.-h "load hints[ ,... n]" Specifies the hint or hints to be used during a bulk import of data into a table or view.

  • ORDER(column[ASC | DESC] [,...n])ORDER(column[ASC | DESC] [,...n])
    Tipo di ordinamento dei dati nel file di dati.The sort order of the data in the data file. Le prestazioni dell'importazione bulk sono migliori se i dati da importare vengono ordinati in base all'indice cluster della tabella, se disponibile.Bulk import performance is improved if the data being imported is sorted according to the clustered index on the table, if any. Se il file di dati viene ordinato in modo diverso rispetto all'ordine di una chiave di indice cluster o se la tabella non include un indice cluster, la clausola ORDER viene ignorata.If the data file is sorted in a different order, that is other than the order of a clustered index key, or if there is no clustered index on the table, the ORDER clause is ignored. I nomi di colonna specificati devono corrispondere a nomi di colonna validi nella tabella di destinazione.The column names supplied must be valid column names in the destination table. Per impostazione predefinita, bcp presuppone che il file di dati non sia ordinato.By default, bcp assumes the data file is unordered. Per garantire l'ottimizzazione dell'importazione bulk, in SQL ServerSQL Server viene inoltre verificato che i dati importati siano ordinati.For optimized bulk import, SQL ServerSQL Server also validates that the imported data is sorted.

  • ROWS_PER_BATCH = bbROWS_PER_BATCH = bb
    Numero di righe di dati per batch (come bb).Number of rows of data per batch (as bb). Viene usato quando non si specifica -b e quindi l'intero file di dati viene inviato al server come singola transazione.Used when -b is not specified, resulting in the entire data file being sent to the server as a single transaction. Il server ottimizza il caricamento bulk in base al valore bb.The server optimizes the bulk load according to the value bb. Per impostazione predefinita, il valore ROWS_PER_BATCH è sconosciuto.By default, ROWS_PER_BATCH is unknown.

  • KILOBYTES_PER_BATCH = ccKILOBYTES_PER_BATCH = cc
    Numero approssimativo di kilobyte di dati per batch (come cc).Approximate number of kilobytes of data per batch (as cc). Per impostazione predefinita, il valore KILOBYTES_PER_BATCH è sconosciuto.By default, KILOBYTES_PER_BATCH is unknown.

  • TABLOCKTABLOCK
    Specifica che viene acquisito un blocco a livello di tabella per l'aggiornamento bulk per la durata dell'operazione di caricamento bulk. In caso contrario, viene acquisito un blocco di riga.Specifies that a bulk update table-level lock is acquired for the duration of the bulk load operation; otherwise, a row-level lock is acquired. Questo hint migliora significativamente le prestazioni, in quanto il mantenimento di un blocco per la durata dell'operazione di copia bulk riduce la contesa dei blocchi per la tabella.This hint significantly improves performance because holding a lock for the duration of the bulk-copy operation reduces lock contention on the table. Una tabella può essere caricata simultaneamente da più client se non include indici e si specifica TABLOCK .A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified. Per impostazione predefinita, la modalità di blocco è determinata dall'opzione table lock on bulk loaddella tabella.By default, locking behavior is determined by the table option table lock on bulk load.

    Nota

    Se la tabella di destinazione è l'indice columnstore cluster, l'hint TABLOCK non è necessario per il caricamento simultaneo da più client poiché ogni thread simultaneo usa un gruppo di righe separato all'interno dell'indice per caricare i dati.If the target table is clustered columnstore index, TABLOCK hint is not required for loading by multiple concurrent clients because each concurrent thread is assigned a separate rowgroup within the index and loads data into it. Per informazioni dettagliate, fare riferimento alle informazioni relative all'indice columnstore,Please refer to columnstore index conceptual topics for details,

    CHECK_CONSTRAINTSCHECK_CONSTRAINTS
    Specifica che tutti i vincoli sulla tabella o sulla vista di destinazione devono essere controllati durante l'operazione di importazione bulk.Specifies that all constraints on the target table or view must be checked during the bulk-import operation. 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.Without the CHECK_CONSTRAINTS hint, any CHECK and FOREIGN KEY constraints are ignored, and after the operation the constraint on the table is marked as not-trusted.

    Nota

    I vincoli UNIQUE, PRIMARY KEY e NOT NULL vengono sempre applicati.UNIQUE, PRIMARY KEY, and NOT NULL constraints are always enforced.

    In un determinato momento sarà necessario controllare i vincoli sull'intera tabella.At some point, you will need to check the constraints on the entire table. Se prima dell'operazione di importazione bulk la tabella non è vuota, il costo per la riconvalida del vincolo potrebbe essere superiore a quello correlato all'applicazione dei vincoli CHECK ai dati incrementali.If the table was nonempty before the bulk import operation, the cost of revalidating the constraint may exceed the cost of applying CHECK constraints to the incremental data. È pertanto consigliabile abilitare in genere il controllo dei vincoli durante un'importazione bulk incrementale.Therefore, we recommend that normally you enable constraint checking during an incremental bulk import.

    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.A situation in which you might want constraints disabled (the default behavior) is if the input data contains rows that violate constraints. Se i vincoli CHECK sono disabilitati, è possibile importare i dati e quindi utilizzare le istruzioni Transact-SQLTransact-SQL per rimuovere i dati non validi.With CHECK constraints disabled, you can import the data and then use Transact-SQLTransact-SQL statements to remove data that is not valid.

    Nota

    L'utilitàbcp ora esegue la convalida e i controlli dei dati che potrebbero causare la mancata esecuzione degli script quando questi vengono eseguiti su dati non validi inclusi in un file di dati.bcp now enforces data validation and data checks that might cause scripts to fail if they are executed on invalid data in a data file.

    Nota

    L'opzione -m max_errors non è valida per il controllo dei vincoli.The -m max_errors switch does not apply to constraint checking.

  • FIRE_TRIGGERSFIRE_TRIGGERS
    Se specificato con l'argomento in , determina l'esecuzione dei trigger di inserimento definiti nella tabella di destinazione durante l'operazione di copia bulk.Specified with the in argument, any insert triggers defined on the destination table will run during the bulk-copy operation. Se non si specifica FIRE_TRIGGERS, non viene eseguito alcun trigger di inserimento.If FIRE_TRIGGERS is not specified, no insert triggers will run. FIRE_TRIGGERS viene ignorato per gli argomenti out, queryoute format .FIRE_TRIGGERS is ignored for the out, queryout, and format arguments.

    -i input_file-i input_file
    Specifica il nome di un file di risposta contenente le risposte alle domande del prompt dei comandi per ogni campo dati quando si esegue una copia bulk in modalità interattiva, ovvero senza indicare-n, -c, -wo -N .Specifies the name of a response file, containing the responses to the command prompt questions for each data field when a bulk copy is being performed using interactive mode (-n, -c, -w, or -N not specified).

    Se input_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -i e il valore input_file .If input_file begins with a hyphen (-) or a forward slash (/), do not include a space between -i and the input_file value.

    -k-k
    Specifica che durante l'operazione il valore delle colonne vuote deve essere Null, ovvero che non verranno inseriti valori predefiniti in tali colonne.Specifies that empty columns should retain a null value during the operation, rather than have any default values for the columns inserted. Per altre informazioni, vedere Mantenere i valori Null o usare i valori predefiniti durante l'importazione in blocco (SQL Server).For more information, see Keep Nulls or Use Default Values During Bulk Import (SQL Server).

    -K application_intent -K application_intent
    Dichiara il tipo di carico di lavoro dell'applicazione in caso di connessione a un server.Declares the application workload type when connecting to a server. L'unico valore consentito è ReadOnly.The only value that is possible is ReadOnly. Se l'opzione -K non è specificata, l'utilità bcp non supporterà la connettività a una replica secondaria in un gruppo di disponibilità Always On.If -K is not specified, the bcp utility will not support connectivity to a secondary replica in an Always On availability group. Per altre informazioni, vedere Repliche secondarie attive: Repliche secondarie leggibili (Gruppi di disponibilità Always On).For more information, see Active Secondaries: Readable Secondary Replicas (Always On Availability Groups).

    -L last_row-L last_row
    Specifica il numero dell'ultima riga da esportare da una tabella o da importare da un file di dati.Specifies the number of the last row to export from a table or import from a data file. Per questo parametro è necessario specificare un valore maggiore di (>) 0, ma minore (<) o uguale (=) al numero dell'ultima riga.This parameter requires a value greater than (>) 0 but less than (<) or equal to (=) the number of the last row. Se il parametro viene omesso, l'impostazione predefinita è l'ultima riga del file.In the absence of this parameter, the default is the last row of the file.

    last_row può essere un numero intero positivo con valore massimo pari a 2^63-1.last_row can be a positive integer with a value up to 2^63-1.

-m max_errors-m max_errors
Specifica il numero massimo di errori di sintassi che possono verificarsi prima dell'annullamento dell'operazione bcp .Specifies the maximum number of syntax errors that can occur before the bcp operation is canceled. Un errore di sintassi implica un errore di conversione dei dati nel tipo di dati di destinazione.A syntax error implies a data conversion error to the target data type. Nel valore totale restituito da max_errors sono esclusi tutti gli errori che possono essere rilevati solo a livello del server, ad esempio le violazioni dei vincoli.The max_errors total excludes any errors that can be detected only at the server, such as constraint violations.

Una riga che non può essere copiata dall'utilità bcp viene ignorata e conteggiata come errore.A row that cannot be copied by the bcp utility is ignored and is counted as one error. Se l'opzione viene omessa, il valore predefinito è 10.If this option is not included, the default is 10.

Nota

L'opzione -m non è valida per la conversione dei tipi di dati money o bigint .The -m option also does not apply to converting the money or bigint data types.

-n
Esegue l'operazione di copia bulk utilizzando i tipi di dati nativi del database.Performs the bulk-copy operation using the native (database) data types of the data. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma vengono utilizzati i valori nativi.This option does not prompt for each field; it uses the native values.

Per altre informazioni, vedere Usare il formato nativo per importare o esportare dati (SQL Server).For more information, see Use Native Format to Import or Export Data (SQL Server).

-N-N
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.Performs the bulk-copy operation using the native (database) data types of the data for noncharacter data, and Unicode characters for character data. Questa opzione rappresenta un'alternativa, con migliori prestazioni, all'opzione -w e può essere usata per trasferire dati tra istanze di SQL ServerSQL Server con un file di dati.This option offers a higher performance alternative to the -w option, and is intended for transferring data from one instance of SQL ServerSQL Server to another using a data file. Non viene visualizzata una richiesta per ogni campo.It does not prompt for each field. Utilizzare questa opzione per trasferire dati contenenti caratteri ANSI estesi se si desidera sfruttare le prestazioni della modalità nativa.Use this option when you are transferring data that contains ANSI extended characters and you want to take advantage of the performance of native mode.

Per altre informazioni, vedere Usare il formato Unicode nativo per importare o esportare dati (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

Se si esportano e successivamente si importano i dati nello stesso schema di tabella usando bcp.exe con -N, può essere visualizzato un avviso di troncamento se è presente una colonna contenente caratteri non Unicode a lunghezza fissa, ad esempio char(10).If you export and then import data to the same table schema by using bcp.exe with -N, you might see a truncation warning if there is a fixed length, non-Unicode character column (for example, char(10)).

L'avviso può essere ignorato.The warning can be ignored. Per evitare la visualizzazione dell'avviso, usare -n invece di -N.One way to resolve this warning is to use -n instead of -N.

-o output_file-o output_file
Specifica il nome di un file in cui viene reindirizzato l'output dal prompt dei comandi.Specifies the name of a file that receives output redirected from the command prompt.

Se output_file inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -o e il valore output_file .If output_file begins with a hyphen (-) or a forward slash (/), do not include a space between -o and the output_file value.

-P password-P password
Specifica la password per l'ID di accesso.Specifies the password for the login ID. Se si omette questa opzione, il comando bcp richiede una password.If this option is not used, the bcp command prompts for a password. Se l'opzione viene specificata alla fine del prompt dei comandi senza indicare una password, bcp userà la password predefinita (NULL).If this option is used at the end of the command prompt without a password, bcp uses the default password (NULL).

Importante

Non usare una password vuota.Do not use a blank password. Usare una password complessa.Use a strong password.

Per nascondere la password, non specificare l'opzione -P in combinazione con l'opzione -U .To mask your password, do not specify the -P option along with the -U option. Dopo aver specificato il comando bcp con -U e altre opzioni (non specificare -P) premere INVIO. Il comando richiederà l'immissione di una password.Instead, after specifying bcp along with the -U option and other switches (do not specify -P), press ENTER, and the command will prompt you for a password. Questo metodo garantisce che la password venga nascosta durante l'immissione.This method ensures that your password will be masked when it is entered.

Se password inizia con un segno meno (-) o una barra (/), non aggiungere uno spazio tra -P e il valore password .If password begins with a hyphen (-) or a forward slash (/), do not add a space between -P and the password value.

-q-q
Esegue l'istruzione SET QUOTED_IDENTIFIERS ON durante la connessione tra l'utilità bcp e un'istanza di SQL ServerSQL Server.Executes the SET QUOTED_IDENTIFIERS ON statement in the connection between the bcp utility and an instance of SQL ServerSQL 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.Use this option to specify a database, owner, table, or view name that contains a space or a single quotation mark. Racchiudere tra virgolette doppie (" ") l'intero nome in tre parti della tabella o della vista.Enclose the entire three-part table or view name in quotation marks ("").

Per specificare un nome di database contenente uno spazio o una virgoletta singola, è necessario usare l'opzione -q .To specify a database name that contains a space or single quotation mark, you must use the –q option.

-q non è applicabile ai valori passati a -d.-q does not apply to values passed to -d.

Per altre informazioni, vedere la sezione Osservazionidi seguito in questo argomento.For more information, see Remarks, later in this topic.

-r row_term-r row_term
Specifica il carattere di terminazione della riga.Specifies the row terminator. Il valore predefinito è \n (carattere di nuova riga).The default is \n (newline character). Utilizzare questo parametro per specificare un carattere di terminazione della riga diverso da quello predefinito.Use this parameter to override the default row terminator. Per altre informazioni, vedere Specificare caratteri di terminazione del campo e della riga (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

Se si specifica il carattere di terminazione della riga in notazione esadecimale nel comando bcp.exe, il valore verrà troncato in corrispondenza di 0x00.If you specify the row terminator in hexadecimal notation in a bcp.exe command, the value will be truncated at 0x00. Se ad esempio si specifica 0x410041, verrà utilizzato 0x41.For example, if you specify 0x410041, 0x41 will be used.

Se row_term inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -r e il valore row_term .If row_term begins with a hyphen (-) or a forward slash (/), do not include a space between -r and the row_term value.

-R-R
Specifica che la copia bulk dei dati relativi a valuta, data e ora verrà eseguita in SQL ServerSQL Server utilizzando il formato definito per le impostazioni locali del computer client.Specifies that currency, date, and time data is bulk copied into SQL ServerSQL Server using the regional format defined for the locale setting of the client computer. Per impostazione predefinita, le impostazioni internazionali vengono ignorate.By default, regional settings are ignored.

-S nome_server [\instance_name] specifica l'istanza di SQL ServerSQL Server a cui connettersi.-S server_name [\instance_name] Specifies the instance of SQL ServerSQL Server to which to connect. Se non si specifica alcun server, l'utilità bcp si connette all'istanza predefinita di SQL ServerSQL Server del computer locale.If no server is specified, the bcp utility connects to the default instance of SQL ServerSQL Server on the local computer. È necessario specificare questa opzione se un comando bcp viene eseguito da un computer remoto in rete o in un'istanza denominata locale.This option is required when a bcp command is run from a remote computer on the network or a local named instance. Per connettersi all'istanza predefinita di SQL ServerSQL Server in un server, specificare solo server_name.To connect to the default instance of SQL ServerSQL Server on a server, specify only server_name. Per connettersi a un'istanza denominata di SQL ServerSQL Server, specificare server_name\instance_name.To connect to a named instance of SQL ServerSQL Server, specify server_name\instance_name.

-t field_term-t field_term
Specifica il carattere di terminazione del campo.Specifies the field terminator. Il valore predefinito è \t (carattere di tabulazione).The default is \t (tab character). Utilizzare questo parametro per specificare un carattere di terminazione del campo diverso da quello predefinito.Use this parameter to override the default field terminator. Per altre informazioni, vedere Specificare caratteri di terminazione del campo e della riga (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

Se si specifica il carattere di terminazione del campo in notazione esadecimale nel comando bcp.exe, il valore verrà troncato in corrispondenza di 0x00.If you specify the field terminator in hexadecimal notation in a bcp.exe command, the value will be truncated at 0x00. Se ad esempio si specifica 0x410041, verrà utilizzato 0x41.For example, if you specify 0x410041, 0x41 will be used.

Se field_term inizia con un segno meno (-) o una barra (/), non includere uno spazio tra -t e il valore field_term .If field_term begins with a hyphen (-) or a forward slash (/), do not include a space between -t and the field_term value.

-T-T
Specifica che l'utilità bcp si connette a SQL ServerSQL Server con una connessione trusted che usa la sicurezza integrata.Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. Non è necessario specificare le credenziali di sicurezza dell'utente di rete, ovvero login_ide password .The security credentials of the network user, login_id, and password are not required. Se non si specifica –T , è necessario specificare –U e –P per eseguire correttamente l'accesso.If –T is not specified, you need to specify –U and –P to successfully log in.

Importante

Quando l'utilità bcp si connette a SQL ServerSQL Server tramite una connessione trusted con sicurezza integrata, usare l'opzione -T (connessione trusted) invece della combinazione di user name e password .When the bcp utility is connecting to SQL ServerSQL Server with a trusted connection using integrated security, use the -T option (trusted connection) instead of the user name and password combination. Quando l'utilità bcp si connette al database SQL o a SQL Data Warehouse tramite l'autenticazione di Windows o l'autenticazione di Azure Active Directory, l'opzione non è supportata.When the bcp utility is connecting to SQL Database or SQL Data Warehouse, using Windows authentication or Azure Active Directory authentication is not supported. Usare le opzioni - U e -P .Use the -U and -P options.

-U login_id-U login_id
Specifica l'ID di accesso utilizzato per connettersi a SQL ServerSQL Server.Specifies the login ID used to connect to SQL ServerSQL Server.

Importante

Quando l'utilità bcp si connette a SQL ServerSQL Server tramite una connessione trusted con sicurezza integrata, usare l'opzione -T (connessione trusted) invece della combinazione di user name e password .When the bcp utility is connecting to SQL ServerSQL Server with a trusted connection using integrated security, use the -T option (trusted connection) instead of the user name and password combination. Quando l'utilità bcp si connette al database SQL o a SQL Data Warehouse tramite l'autenticazione di Windows o l'autenticazione di Azure Active Directory, l'opzione non è supportata.When the bcp utility is connecting to SQL Database or SQL Data Warehouse, using Windows authentication or Azure Active Directory authentication is not supported. Usare le opzioni - U e -P .Use the -U and -P options.

-v-v
Visualizza il numero di versione e le informazioni sul copyright per l'utilità bcp .Reports the bcp utility version number and copyright.

-V (80 | 90 | 100 | 110 | 120 | 130 )-V (80 | 90 | 100 | 110 | 120 | 130 )
Esegue l'operazione di copia bulk utilizzando i tipi di dati di una versione precedente di SQL ServerSQL Server.Performs the bulk-copy operation using data types from an earlier version of SQL ServerSQL Server. Con questa opzione non viene visualizzata una richiesta per ogni campo, ma vengono utilizzati i valori predefiniti.This option does not prompt for each field; it uses the default values.

80 = SQL Server 2000SQL Server 200080 = SQL Server 2000SQL Server 2000

90 = SQL Server 2005SQL Server 200590 = SQL Server 2005SQL Server 2005

100 = SQL Server 2008SQL Server 2008 e SQL Server 2008 R2SQL Server 2008 R2100 = SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2

110 = SQL Server 2012SQL Server 2012110 = SQL Server 2012SQL Server 2012

120 = SQL Server 2014SQL Server 2014120 = SQL Server 2014SQL Server 2014

130 = SQL Server 2016SQL Server 2016130 = SQL Server 2016SQL Server 2016

Per generare ad esempio dati per tipi non supportati in SQL Server 2000SQL Server 2000, ma introdotti in versioni successive di SQL ServerSQL Server, utilizzare l'opzione -V80.For example, to generate data for types not supported by SQL Server 2000SQL Server 2000, but were introduced in later versions of SQL ServerSQL Server, use the -V80 option.

Per altre informazioni, vedere Importare dati in formato nativo e carattere da versioni precedenti di SQL Server.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

-w-w
Esegue l'operazione di copia bulk utilizzando caratteri Unicode.Performs the bulk copy operation using Unicode characters. Questa opzione non determina la visualizzazione di una richiesta per ogni campo, ma usa nchar come tipo di archiviazione, il carattere di tabulazione ( \t ) come separatore dei campi e il carattere di nuova riga ( \n ) come carattere di terminazione della riga.This option does not prompt for each field; it uses nchar as the storage type, no prefixes, \t (tab character) as the field separator, and \n (newline character) as the row terminator. -w non è compatibile con -c.-w is not compatible with -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).

-x-x
Se usato con le opzioni format e -f format_file , genera un file di formato basato su XML anziché un file di formato predefinito non XML.Used with the format and -f format_file options, generates an XML-based format file instead of the default non-XML format file. L'opzione -x non può essere usata per l'importazione o l'esportazione dei dati.The -x does not work when importing or exporting data. Genera un errore se viene usata senza format e -f format_file.It generates an error if used without both format and -f format_file.

OsservazioniRemarks

L'utilità bcp 13.0 viene installato durante l'installazione degli strumenti di MicrosoftMicrosoft SQL Server 2017SQL Server 2017 .The bcp 13.0 client is installed when you install MicrosoftMicrosoft SQL Server 2017SQL Server 2017 tools. Se gli strumenti vengono installati sia per SQL Server 2017SQL Server 2017 che per una versione precedente di SQL ServerSQL Server, a seconda del valore della variabile di ambiente PATH, è possibile che venga usato il client bcp precedente anziché il client bcp 13.0.If tools are installed for both SQL Server 2017SQL Server 2017 and an earlier version of SQL ServerSQL Server, depending on the order of values of the PATH environment variable, you might be using the earlier bcp client instead of the bcp 13.0 client. La variabile di ambiente definisce il set di directory utilizzato in Windows per la ricerca di file eseguibili.This environment variable defines the set of directories used by Windows to search for executable files. Per determinare la versione in uso, eseguire il comando bcp /v al prompt dei comandi di Windows.To discover which version you are using, run the bcp /v command at the Windows Command Prompt. Per informazioni su come impostare il percorso di comando nella variabile di ambiente PATH, vedere la Guida di Windows.For information about how to set the command path in the PATH environment variable, see Windows Help.

L'utilità bcp può anche essere scaricata separatamente dal Microsoft SQL Server 2016 Feature Pack.The bcp utility can also be downloaded separately from the Microsoft SQL Server 2016 Feature Pack. Selezionare ENU\x64\MsSqlCmdLnUtils.msi o ENU\x86\MsSqlCmdLnUtils.msi.Select either ENU\x64\MsSqlCmdLnUtils.msi or ENU\x86\MsSqlCmdLnUtils.msi.

I file di formato XML sono supportati solo quando gli strumenti di SQL ServerSQL Server vengono installati insieme a SQL ServerSQL Server Native Client.XML format files are only supported when SQL ServerSQL Server tools are installed together with SQL ServerSQL Server Native Client.

Per informazioni sulla posizione e sulle modalità di esecuzione dell'utilità bcp e sulle convenzioni di sintassi per le utilità della riga di comando, vedere Guida di riferimento alle utilità del prompt dei comandi (Motore di database).For information about where to find or how to run the bcp utility and about the command prompt utilities syntax conventions, see Command Prompt Utility Reference (Database Engine).

Per informazioni sulla preparazione dei dati per le operazioni di importazione o esportazione in blocco, vedere Preparare i dati per l'importazione o l'esportazione in blocco (SQL Server).For information on preparing data for bulk import or export operations, see Prepare Data for Bulk Export or Import (SQL Server).

Per informazioni sui casi in cui le operazioni di inserimento di righe eseguite durante l'importazione in blocco vengono registrate nel log delle transazioni, vedere Prerequisiti per la registrazione minima nell'importazione in blocco.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

Supporto per file di dati nativiNative Data File Support

In SQL Server 2017SQL Server 2017, l'utilità bcp supporta i file di dati nativi compatibili con SQL Server 2000SQL Server 2000, SQL Server 2005SQL Server 2005, SQL Server 2008SQL Server 2008, SQL Server 2008 R2SQL Server 2008 R2e SQL Server 2012SQL Server 2012.In SQL Server 2017SQL Server 2017, the bcp utility supports native data files compatible with SQL Server 2000SQL Server 2000, SQL Server 2005SQL Server 2005, SQL Server 2008SQL Server 2008, SQL Server 2008 R2SQL Server 2008 R2, and SQL Server 2012SQL Server 2012.

Colonne calcolate e colonne timestampComputed Columns and timestamp Columns

I valori per le colonne calcolate o timestamp nel file di dati importato vengono ignorati e SQL ServerSQL Server assegna automaticamente nuovi valori.Values in the data file being imported for computed or timestamp columns are ignored, and SQL ServerSQL Server automatically assigns values. Se il file di dati non contiene valori per le colonne calcolate o timestamp della tabella, usare un file di formato per specificare che le colonne calcolate o timestamp della tabella dovranno essere ignorate durante l'importazione dei dati. I valori per la colonna verranno assegnati automaticamente da SQL ServerSQL Server .If the data file does not contain values for the computed or timestamp columns in the table, use a format file to specify that the computed or timestamp columns in the table should be skipped when importing data; SQL ServerSQL Server automatically assigns values for the column.

Le copie bulk di colonne calcolate e timestamp da SQL ServerSQL Server a un file di dati vengono eseguite con le modalità consuete.Computed and timestamp columns are bulk copied from SQL ServerSQL Server to a data file as usual.

Definizione di identificatori contenenti spazi o virgoletteSpecifying Identifiers That Contain Spaces or Quotation Marks

SQL ServerSQL Server possono includere caratteri quali spazi incorporati e virgolette. identifiers can include characters such as embedded spaces and quotation marks. Tali identificatori possono essere utilizzati nei modi seguenti:Such identifiers must be treated as follows:

  • 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 ("").When you specify an identifier or file name that includes a space or quotation mark at the command prompt, enclose the identifier in quotation marks ("").

    Il comando bcp out seguente, ad esempio, consente di creare un file di dati denominato Currency Types.dat:For example, the following bcp out command creates a data file named Currency Types.dat:

    bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c  
    
  • Per specificare un nome di database contenente uno spazio o una virgoletta singola, è necessario usare l'opzione -q .To specify a database name that contains a space or quotation mark, you must use the -q option.

  • Per i nomi di proprietario, di tabella o di vista contenenti spazi incorporati o virgolette singole, è possibile effettuare le operazioni seguenti:For owner, table, or view names that contain embedded spaces or quotation marks, you can either:

    • Specificare l'opzione -q oppureSpecify the -q option, or

    • Racchiudere il nome del proprietario, della tabella o della vista tra parentesi quadre ([]) all'interno di virgolette.Enclose the owner, table, or view name in brackets ([]) inside the quotation marks.

Convalida dei datiData Validation

L'utilitàbcp ora esegue la convalida e i controlli dei dati che potrebbero causare la mancata esecuzione degli script quando questi vengono eseguiti su dati non validi inclusi in un file di dati.bcp now enforces data validation and data checks that might cause scripts to fail if they are executed on invalid data in a data file. L'utilità bcp , ad esempio, verifica quanto segue:For example, bcp now verifies that:

  • Validità della rappresentazione nativa dei tipi di dati float o real .The native representation of float or real data types are valid.

  • Lunghezza in byte pari dei dati Unicode.Unicode data has an even-byte length.

    Il caricamento di alcuni tipi di dati non validi di cui può essere eseguita l'importazione bulk nelle versioni precedenti di SQL ServerSQL Server potrebbe avere esito negativo in questa versione. Nelle versioni precedenti l'errore si verifica solo quando un client tenta di accedere ai dati non validi.Forms of invalid data that could be bulk imported in earlier versions of SQL ServerSQL Server might fail to load now; whereas, in earlier versions, the failure did not occur until a client tried to access the invalid data. La convalida aggiuntiva riduce il rischio di errori durante l'esecuzione di query sui dati in seguito al caricamento bulk.The added validation minimizes surprises when querying the data after bulk load.

Esportazione o importazione bulk di documenti SQLXMLBulk Exporting or Importing SQLXML Documents

Per l'esportazione o l'importazione bulk di dati SQLXML, utilizzare uno dei tipi di dati seguenti nel file di formato.To bulk export or import SQLXML data, use one of the following data types in your format file.

Tipo di datiData type EffettoEffect
SQLCHAR o SQLVARYCHARSQLCHAR or SQLVARYCHAR I dati vengono inviati nella tabella codici del client o nella tabella codici implicita delle regole di confronto.The data is sent in the client code page or in the code page implied by the collation). L'effetto equivale a quello ottenuto specificando l'opzione -c senza definire un file di formato.The effect is the same as specifying the -c switch without specifying a format file.
SQLNCHAR o SQLNVARCHARSQLNCHAR or SQLNVARCHAR I dati vengono inviati in formato Unicode.The data is sent as Unicode. L'effetto equivale a quello ottenuto specificando l'opzione -w senza definire un file di formato.The effect is the same as specifying the -w switch without specifying a format file.
SQLBINARY o SQLVARYBINSQLBINARY or SQLVARYBIN I dati vengono inviati senza conversione.The data is sent without any conversion.

PermissionsPermissions

Un'operazione bcp out richiede l'autorizzazione SELECT per la tabella di origine.A bcp out operation requires SELECT permission on the source table.

Un'operazione bcp in richiede almeno l'autorizzazione SELECT/INSERT per la tabella di destinazione.A bcp in operation minimally requires SELECT/INSERT permissions on the target table. È inoltre richiesta l'autorizzazione ALTER TABLE se si verifica uno dei casi seguenti:In addition, ALTER TABLE permission is required if any of the following is true:

  • Sono presenti alcuni vincoli e l'hint CHECK_CONSTRAINTS non è specificato.Constraints exist and the CHECK_CONSTRAINTS hint is not specified.

    Nota

    Per impostazione predefinita, i vincoli sono disabilitati.Disabling constraints is the default behavior. Per abilitarli in modo esplicito, usare l'opzione -h con l'hint CHECK_CONSTRAINTS.To enable constraints explicitly, use the -h option with the CHECK_CONSTRAINTS hint.

  • Sono presenti alcuni trigger e l'hint FIRE_TRIGGER non è specificato.Triggers exist and the FIRE_TRIGGER hint is not specified.

    Nota

    Per impostazione predefinita, i trigger non sono attivati.By default, triggers are not fired. Per attivarli in modo esplicito, usare l'opzione -h con l'hint FIRE_TRIGGERS.To fire triggers explicitly, use the -h option with the FIRE_TRIGGERS hint.

  • Usare l'opzione -E per importare valori Identity da un file di dati.You use the -E option to import identity values from a data file.

Nota

Il requisito relativo all'autorizzazione ALTER TABLE per la tabella di destinazione è una caratteristica introdotta in SQL Server 2005SQL Server 2005.Requiring ALTER TABLE permission on the target table was new in SQL Server 2005SQL Server 2005. Questo nuovo requisito può causare l'esito negativo degli script di bcp che non consentono l'applicazione di trigger e controlli dei vincoli se l'account utente non dispone delle autorizzazioni ALTER TABLE per la tabella di destinazione.This new requirement might cause bcp scripts that do not enforce triggers and constraint checks to fail if the user account lacks ALTER table permissions for the target table.

Procedure consigliate relative alla modalità carattere (-c) e alla modalità nativa (-n)Character Mode (-c) and Native Mode (-n) Best Practices

In questa sezione sono presenti indicazioni relative alla modalità carattere (-c) e alla modalità nativa (-n).This section has recommendations for to character mode (-c) and native mode (-n).

  • (Amministratore/utente) Quando possibile, utilizzare il formato nativo (-n) per evitare i problemi relativi al separatore.(Administrator/User) When possible, use native format (-n) to avoid the separator issue. Utilizzare il formato nativo per esportare e importare tramite SQL ServerSQL Server.Use the native format to export and import using SQL ServerSQL Server. Se i dati saranno importati in un database non SQL ServerSQL Server , esportarli da SQL ServerSQL Server utilizzando l'opzione -c o -w.Export data from SQL ServerSQL Server using the -c or -w option if the data will be imported to a non- SQL ServerSQL Server database.

  • (Amministratore) Verificare i dati in caso di utilizzo di BCP OUT.(Administrator) Verify data when using BCP OUT. Ad esempio, quando si utilizza BCP OUT, BCP IN, quindi BCP OUT, verificare che i dati vengano esportati correttamente e che i valori del carattere di terminazione non siano utilizzati in alcuni valori di dati.For example, when you use BCP OUT, BCP IN, and then BCP OUT verify that the data is properly exported and the terminator values are not used as part of some data value. Considerare di eseguire l'override dei caratteri di terminazione predefiniti (utilizzando le opzioni -t e -r) con valori esadecimali casuali per evitare conflitti tra i valori del carattere di terminazione e i valori dei dati.Please consider overriding the default terminators (using -t and -r options) with random hexadecimal values to avoid conflicts between terminator values and data values.

  • (Utente) Utilizzare un carattere di terminazione lungo e univoco (qualsiasi sequenza di byte o caratteri) per ridurre la possibilità di un conflitto con il valore stringa effettivo.(User) Use a long and unique terminator (any sequence of bytes or characters) to minimize the possibility of a conflict with the actual string value. Questa operazione può essere effettuata utilizzando le opzioni -t e -r.This can be done by using the -t and -r options.

EsempiExamples

In questa sezione sono disponibili gli esempi seguenti:This section contains the following examples:

  • A.A. Identificare la versione dell'utilità bcpIdentify bcp utility version

  • B.B. Copia delle righe di tabella in un file di dati (con connessione trusted)Copying table rows into a data file (with a trusted connection)

  • C.C. Copia delle righe di tabella in un file di dati (con autenticazione in modalità mista)Copying table rows into a data file (with Mixed-mode Authentication)

  • D.D. Copia di dati da un file a una tabellaCopying data from a file to a table

  • E.E. Copia di una colonna specifica in un file di datiCopying a specific column into a data file

  • F.F. Copia di una riga specifica in un file di datiCopying a specific row into a data file

  • G.G. Copia di dati da una query a un file di datiCopying data from a query to a data file

  • H.H. Creazione dei file di formatoCreating format files

  • I.I. Uso di un file di formato per l'importazione bulk con bcpUsing a format file to bulk import with bcp

Condizioni di test di esempioExample Test Conditions

Gli esempi seguenti usano il database di esempio WideWorldImporters per SQL Server (a partire dal 2016) e il database SQL di Azure.The examples below make use of the WideWorldImporters sample database for SQL Server (starting 2016) and Azure SQL Database. WideWorldImporters può essere scaricato da https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0.WideWorldImporters can be downloaded from https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Per la sintassi da usare per ripristinare il database di esempio, vedere RESTORE (Transact-SQL) .See RESTORE (Transact-SQL) for the syntax to restore the sample database. Se non specificato diversamente, si presuppone che l'utente usi l'autenticazione di Windows e abbia una connessione trusted all'istanza del server in cui viene eseguito il comando bcp .Except where specified otherwise, the examples assume that you are using Windows Authentication and have a trusted connection to the server instance on which you are running the bcp command. Una directory denominata D:\BCP verrà usata nella maggior parte degli esempi.A directory named D:\BCP will be used in many of the examples.

Lo script seguente crea una copia vuota della tabella WorlWideImporters.Warehouse.StockItemTransactions e quindi aggiunge un vincolo di chiave primaria.The script below creates an empty copy of the WorlWideImporters.Warehouse.StockItemTransactions table and then adds a primary key constraint. Eseguire lo script T-SQL seguente in SQL Server Management Studio (SSMS)Run the following T-SQL script in SQL Server Management Studio (SSMS)

USE WorlWideImporters;  
GO  

SET NOCOUNT ON;

IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Warehouse.StockItemTransactions_bcp')     
BEGIN
    SELECT * INTO WorlWideImporters.Warehouse.StockItemTransactions_bcp
    FROM WorlWideImporters.Warehouse.StockItemTransactions  
    WHERE 1 = 2;  

    ALTER TABLE Warehouse.StockItemTransactions_bcp 
    ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp PRIMARY KEY NONCLUSTERED 
    (StockItemTransactionID ASC);
END

Nota

Troncare la tabella StockItemTransactions_bcp in base alle esigenze.Truncate the StockItemTransactions_bcp table as needed.

TRUNCATE TABLE WorlWideImporters.Warehouse.StockItemTransactions_bcp;TRUNCATE TABLE WorlWideImporters.Warehouse.StockItemTransactions_bcp;

A.A. Identificare la versione dell'utilità bcpIdentify bcp utility version

Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp -v

B.B. Copia delle righe di tabella in un file di dati (con connessione trusted)Copying table rows into a data file (with a trusted connection)

Gli esempi seguenti illustrano l'uso dell'opzione out nella tabella WorlWideImporters.Warehouse.StockItemTransactions .The following examples illustrates the out option on the WorlWideImporters.Warehouse.StockItemTransactions table.

  • BasicBasic
    Questo esempio crea un file di dati denominato StockItemTransactions_character.bcp in cui vengono copiati i dati della tabella usando il formato carattere .This example creates a data file named StockItemTransactions_character.bcp and copies the table data into it using character format.

    Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
    
    • EstesoExpanded
      Questo esempio crea un file di dati denominato StockItemTransactions_native.bcp in cui vengono copiati i dati della tabella usando il formato nativo .This example creates a data file named StockItemTransactions_native.bcp and copies the table data into it using the native format. L'esempio inoltre: specifica il numero massimo di errori di sintassi, un file di errore e un file di output.The example also: specifies the maximum number of syntax errors, an error file, and an output file.

      Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

      bcp WorlWideImporters.Warehouse.StockItemTransactions OUT D:\BCP\StockItemTransactions_native.bcp -m 1 -n -e D:\BCP\Error_out.log -o D:\BCP\Output_out.log -S -T
      

Esaminare Error_out.log e Output_out.log.Review Error_out.log and Output_out.log. Error_out.log deve essere vuoto.Error_out.log should be blank. Confrontare le dimensioni dei file tra StockItemTransactions_character.bcp e StockItemTransactions_native.bcp.Compare the file sizes between StockItemTransactions_character.bcp and StockItemTransactions_native.bcp.

C.C. Copia delle righe di tabella in un file di dati (con autenticazione in modalità mista)Copying table rows into a data file (with mixed-mode authentication)

L'esempio seguente illustra l'uso dell'opzione out nella tabella WorlWideImporters.Warehouse.StockItemTransactionsThe following example illustrates the out option on the WorlWideImporters.Warehouse.StockItemTransactions table. Questo esempio crea un file di dati denominato StockItemTransactions_character.bcp in cui vengono copiati i dati della tabella usando il formato carattere .This example creates a data file named StockItemTransactions_character.bcp and copies the table data into it using character format.

Si presuppone che l'utente usi l'autenticazione in modalità mista, quindi l'opzione -U è necessaria per specificare l'ID di accesso.The example assumes that you are using mixed-mode authentication, you must use the -U switch to specify your login ID. A meno che non venga eseguita la connessione all'istanza predefinita di SQL ServerSQL Server sul computer locale, usare l'opzione -S per specificare il nome di sistema e, facoltativamente, il nome di un'istanza.Also, unless you are connecting to the default instance of SQL ServerSQL Server on the local computer, use the -S switch to specify the system name and, optionally, an instance name.

Al prompt dei comandi, immettere il comando seguente: (il sistema chiederà di specificare la password.)At a command prompt, enter the following command: (The system will prompt you for your password.)

bcp WorlWideImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D.D. Copia di dati da un file a una tabellaCopying data from a file to a table

Gli esempi seguenti illustrano l'opzione in nella tabella WorlWideImporters.Warehouse.StockItemTransactions_bcp tramite i file creati in precedenza.The following examples illustrate the in option on the WorlWideImporters.Warehouse.StockItemTransactions_bcp table using files created above.

  • BasicBasic
    Questo esempio usa il file di dati StockItemTransactions_character.bcp creato in precedenza.This example uses the StockItemTransactions_character.bcp data file previously created.

    Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T  
    
  • EstesoExpanded
    Questo esempio usa il file di dati StockItemTransactions_native.bcp creato in precedenza.This example uses the StockItemTransactions_native.bcp data file previously created. L'esempio inoltre: usa l'hint TABLOCK, specifica la dimensione del batch, il numero massimo di errori di sintassi, un file di errore e un file di output.The example also: use the hint TABLOCK, specifies the batch size, the maximum number of syntax errors, an error file, and an output file.

    Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\BCP\Error_in.log -o D:\BCP\Output_in.log -S -T 
    

    Esaminare Error_in.log e Output_in.log.Review Error_in.log and Output_in.log.

E.E. Copia di una colonna specifica in un file di datiCopying a specific column into a data file

Per copiare una colonna specifica, è possibile usare l'opzione queryout .To copy a specific column, you can use the queryout option. Nell'esempio seguente viene copiata in un file di dati solo la colonna StockItemTransactionID della tabella Warehouse.StockItemTransactions .The following example copies only the StockItemTransactionID column of the Warehouse.StockItemTransactions table into a data file.

Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp "SELECT StockItemTransactionID FROM WorlWideImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\BCP\StockItemTransactionID_c.bcp -c -T

F.F. Copia di una riga specifica in un file di datiCopying a specific row into a data file

Per copiare una riga specifica, è possibile usare l'opzione queryout .To copy a specific row, you can use the queryout option. Nell'esempio seguente solo la riga dell'utente denominato Amy Trefl viene copiata dalla tabella WorlWideImporters.Application.People in un file di dati Amy_Trefl_c.bcp.The following example copies only the row for the person named Amy Trefl from the WorlWideImporters.Application.People table into a data file Amy_Trefl_c.bcp. Nota: l'opzione -d viene usata per identificare il database.Note: the -d switch is used identify the database.

Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\BCP\Amy_Trefl_c.bcp -d WorlWideImporters -c -T

G.G. Copia di dati da una query a un file di datiCopying data from a query to a data file

Per copiare il set di risultati da un'istruzione Transact-SQL a un file di dati, usare l'opzione queryout .To copy the result set from a Transact-SQL statement to a data file, use the queryout option. Nell'esempio seguente vengono copiati i nomi dalla tabella WorlWideImporters.Application.People nel file di dati People.txt , ordinandoli in base al nome completo.The following example copies the names from the WorlWideImporters.Application.People table, ordered by full name, into the People.txt data file. Nota: l'opzione -t viene usata per creare un file delimitato da virgole.Note: the -t switch is used to create a comma delimited file.

Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp "SELECT FullName, PreferredName FROM WorlWideImporters.Application.People ORDER BY FullName" queryout D:\BCP\People.txt -t, -c -T

H.H. Creazione dei file di formatoCreating format files

Nell'esempio seguente vengono creati tre diversi file di formato per la tabella Warehouse.StockItemTransactions nel database WorlWideImporters .The following example creates three different format files for the Warehouse.StockItemTransactions table in the WorlWideImporters database. Esaminare il contenuto di ogni file creato.Review the contents of each created file.

Al prompt dei comandi immettere i comandi seguenti:At a command prompt, enter the following commands:

REM non-XML character format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.fmt -c -T 

REM non-XML native format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_n.fmt -n -T

REM XML character format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.xml -x -c -T

Nota

Per usare l'opzione -x , è necessario avere un client bcp 9.0.To use the -x switch, you must be using a bcp 9.0 client. Per informazioni sull'uso del client bcp 9.0, vedere la sezione "Osservazioni".For information about how to use the bcp 9.0 client, see "Remarks."

Per altre informazioni, vedere File in formato non XML (SQL Server) e File in formato XML (SQL Server).For more information, see Non-XML Format Files (SQL Server) and XML Format Files (SQL Server).

I.I. Utilizzo di un file di formato per l'importazione bulk con bcpUsing a format file to bulk import with bcp

Per usare un file di formato creato in precedenza durante l'importazione di dati in un'istanza di SQL ServerSQL Server, specificare -f con l'opzione in .To use a previously created format file when importing data into an instance of SQL ServerSQL Server, use the -f switch with the in option. Il comando seguente, ad esempio, consente di eseguire la copia bulk del contenuto di un file di dati, StockItemTransactions_character.bcp, in una copia della tabella Warehouse.StockItemTransactions_bcp usando il file di formato creato in precedenza, StockItemTransactions_c.xml.For example, the following command bulk copies the contents of a data file, StockItemTransactions_character.bcp, into a copy of the Warehouse.StockItemTransactions_bcp table by using the previously created format file, StockItemTransactions_c.xml. Nota: l'opzione -L viene usata per importare solo i primi 100 record.Note: the -L switch is used to import only the first 100 records.

Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp in D:\BCP\StockItemTransactions_character.bcp -L 100 -f D:\BCP\StockItemTransactions_c.xml -T 

Nota

I file di formato risultano particolarmente utili quando i campi dei file di dati sono diversi dalle colonne della tabella, ad esempio per numero, ordine o tipi di dati.Format files are useful when the data file fields are different from the table columns; for example, in their number, ordering, or data types. Per altre informazioni, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For more information, see Format Files for Importing or Exporting Data (SQL Server).

J.J. Definizione di una tabella codiciSpecifying a code page

Il codice parziale riportato di seguito rappresenta l'importazione bcp quando si specifica una tabella codici 65001:The following partial code example shows bcp import while specifying a code page 65001:

bcp.exe MyTable in "D:\data.csv" -T -c -C 65001 -t , ...  

Il codice parziale riportato di seguito rappresenta l'esportazione bcp quando si specifica una tabella codici 65001:The following partial code example shows bcp export while specifying a code page 65001:

bcp.exe MyTable out "D:\data.csv" -T -c -C 65001 -t , ...  

Esempi aggiuntiviAdditional Examples

Gli argomenti seguenti contengono esempi relativi all'uso di bcp:The following topics contain examples of using bcp:
Formati di dati per l'importazione o l'esportazione bulk (SQL Server)Data Formats for Bulk Import or Bulk Export (SQL Server)
 ● Usare il formato nativo per importare o esportare dati (SQL Server) ● Use Native Format to Import or Export Data (SQL Server)
 ● Usare il formato carattere per importare o esportare dati (SQL Server) ● Use Character Format to Import or Export Data (SQL Server)
 ● Usare il formato nativo Unicode per importare o esportare dati (SQL Server) ● Use Unicode Native Format to Import or Export Data (SQL Server)
 ● Usare il formato carattere Unicode per importare o esportare dati (SQL Server) ● Use Unicode Character Format to Import or Export Data (SQL Server)

Impostazione dei caratteri di terminazione del campo e della riga (SQL Server)Specify Field and Row Terminators (SQL Server)

Mantenimento dei valori Null o utilizzo dei valori predefiniti durante un'importazione bulk (SQL Server)Keep Nulls or Use Default Values During Bulk Import (SQL Server)

Mantenere i valori Identity durante l'importazione bulk dei dati (SQL Server)Keep Identity Values When Bulk Importing Data (SQL Server)

File di formato per l'importazione o l'esportazione di dati (SQL Server)Format Files for Importing or Exporting Data (SQL Server))
 ● Creare un file di formato (SQL Server) ● Create a Format File (SQL Server)
 ● Usare un file di formato per l'importazione bulk dei dati (SQL Server) ● Use a Format File to Bulk Import Data (SQL Server)
 ● Usare un file di formato per ignorare una colonna di una tabella (SQL Server) ● Use a Format File to Skip a Table Column (SQL Server)
 ● Usare un file di formato per ignorare un campo dati (SQL Server) ● Use a Format File to Skip a Data Field (SQL Server)
 ● Usare un file di formato per eseguire il mapping tra le colonne della tabella e i campi del file di dati (SQL Server) ● Use a Format File to Map Table Columns to Data-File Fields (SQL Server)

Esempi di importazione ed esportazione bulk di documenti XML (SQL Server)Examples of Bulk Import and Export of XML Documents (SQL Server)

Vedere ancheSee Also

Preparare i dati per l'importazione o l'esportazione in blocco (SQL Server) Prepare Data for Bulk Export or Import (SQL Server)
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
SET QUOTED_IDENTIFIER ( Transact-SQL ) SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
sp_tableoption ( Transact-SQL ) sp_tableoption (Transact-SQL)
File di formato per l'importazione o l'esportazione di dati (SQL Server)Format Files for Importing or Exporting Data (SQL Server)