Specificare la lunghezza del prefisso nei file di dati tramite bcp (SQL Server)Specify Prefix Length in Data Files by Using bcp (SQL Server)

Per fornire il tipo di archiviazione file con la massima compressione durante l'esportazione in blocco dei dati in formato nativo in un file di dati, il comando bcp inserisce davanti a ogni campo uno o più caratteri che ne indicano la lunghezza.To provide the most compact file storage for the bulk export of data in native format to a data file, the bcp command precedes each field with one or more characters that indicates the length of the field. Tali caratteri sono denominati caratteri per il prefisso di lunghezza.These characters are called length prefix characters.

Richiesta della lunghezza del prefisso da parte di bcpThe bcp Prompt for Prefix Length

Se un comando interattivo bcp include l'opzione in o out senza l'opzione relativa al file di formato (-f) o al formato dei dati (-n, -c, -wo -N) viene richiesta la lunghezza del prefisso di ogni campo di dati, come illustrato di seguito:If an interactive bcp command contains the in or out option without either the format file switch (-f) or a data-format switch (-n, -c, -w, or -N), the command prompts for the prefix length of each data field, as follows:

Enter prefix length of field <field_name> [<default>]:

Se si specifica 0, bcp richiede la lunghezza del campo (per dati di tipo carattere) o il carattere di terminazione del campo (per dati di tipo nativo non carattere).If you specify 0, bcp prompts you for either the length of the field (for a character data type) or a field terminator (for a native non-character type).

Nota

Dopo l'impostazione interattiva di tutti i campi in un comando bcp, viene richiesto di salvare le risposte relative a ogni campo in un file di formato non XML.After you interactively specify all of the fields in a bcp command, the command prompts you save your responses for each field in a non-XML format file. Per altre informazioni sui file di formato non XML, vedere File in formato non XML (SQL Server).For more information about non-XML format files, see Non-XML Format Files (SQL Server).

Panoramica della lunghezza del prefissoOverview of Prefix Length

Per archiviare la lunghezza del prefisso di un campo, è necessario un numero di byte sufficiente per rappresentare la lunghezza massima del campo.To store the prefix length of a field, you need enough bytes to represent the maximum length of the field. Il numero di byte necessari dipende inoltre dal tipo di archiviazione di file, dall'impostazione relativa al supporto di valori Null della colonna e dal formato utilizzato per l'archiviazione nel file di dati: nativo o carattere.The number of bytes that are required also depends upon the file storage type, the nullability of a column, and whether the data is being stored in the data file in its native or character format. Ad esempio, il tipo di dati text o image richiede quattro caratteri di prefisso per archiviare la lunghezza del campo, mentre il tipo di dati varchar richiede due caratteri.For example, a text or image data type requires four prefix characters to store the field length, but a varchar data type requires two characters. I caratteri per il prefisso di lunghezza vengono archiviati nel file di dati utilizzando il formato binario interno di SQL ServerSQL Server.In the data file, these length-prefix characters are stored in the internal binary data format of SQL ServerSQL Server.

Importante

Per i dati in formato nativo, utilizzare i prefissi di lunghezza anziché i caratteri di terminazione del campo.When you use native format, use length prefixes rather than field terminators. È possibile che si verifichino conflitti tra i caratteri di terminazione e i dati in formato nativo, in quanto per i file di dati in formato nativo viene utilizzato il formato binario interno di SQL ServerSQL Server .Native format data might conflict with terminators because a native-format data file is stored in the SQL ServerSQL Server internal binary data format.

Lunghezze del prefisso per l'esportazione bulk Prefix Lengths for Bulk Export

Nota

Il valore predefinito visualizzato alla richiesta della lunghezza del prefisso quando si esegue l'esportazione di un campo rappresenta la lunghezza del prefisso ottimale per il campo.The default value that is provided at the prefix-length prompt when you export a field indicates the most efficient prefix length for the field.

I valori Null vengono rappresentati come campo vuoto.Null values are represented as an empty field. Per indicare che il campo è vuoto, ovvero che rappresenta un valore NULL, il prefisso contiene il valore -1, quindi è necessario almeno 1 byte.To indicate that the field is empty (represents NULL), the field prefix contains the value -1; that is, it requires at least 1 byte. Si noti che per le colonne di tabella di SQL ServerSQL Server che consentono valori Null è necessaria una lunghezza del prefisso maggiore o uguale a 1, a seconda del tipo di archiviazione di file.Note that if a SQL ServerSQL Server table column allows null values, the column requires a prefix length of 1 or greater, depending on the file storage type.

Quando si esegue l'esportazione bulk di dati e li si archivia come tipi di dati nativi o in formato carattere, utilizzare le lunghezze di prefisso illustrate nella tabella seguente:When you bulk export data and store it in either native data types or character format, use the prefix lengths shown in the following table.

SQL ServerSQL Server

Tipo di datidata type
Formato nativoNative format

NOT NULLNOT NULL
Formato nativoNative format

NULLNULL
Formato carattereCharacter format

NOT NULLNOT NULL
Formato carattereCharacter format

NULLNULL
charchar 22 22 22 22
varcharvarchar 22 22 22 22
ncharnchar 22 22 22 22
nvarcharnvarchar 22 22 22 22
texttext** 44 44 44 44
ntextntext** 44 44 44 44
binarybinary 22 22 22 22
varbinaryvarbinary 22 22 22 22
imageimage** 44 44 44 44
datetimedatetime 00 11 00 11
smalldatetimesmalldatetime 00 11 00 11
decimaldecimal 11 11 11 11
numericnumeric 11 11 11 11
floatfloat 00 11 00 11
realreal 00 11 00 11
intint 00 11 00 11
bigintbigint 00 11 00 11
smallintsmallint 00 11 00 11
tinyinttinyint 00 11 00 11
moneymoney 00 11 00 11
smallmoneysmallmoney 00 11 00 11
bitbit 00 11 00 11
uniqueidentifieruniqueidentifier 11 11 00 11
timestamptimestamp 11 11 11 11
varchar(max)varchar(max) 88 88 88 88
varbinary(max)varbinary(max) 88 88 88 88
UDT (tipo di dati definito dall'utente)UDT (a user-defined data type) 88 88 88 88
XMLXML 88 88 88 88
sql_variantsql_variant 88 88 88 88

*I tipi di dati ntext, texte image verranno rimossi in una versione futura di SQL ServerSQL Server.*The ntext, text, and image data types will be removed in a future version of SQL ServerSQL Server. Evitare di utilizzare questi tipi di dati in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni che attualmente li utilizzano.Avoid using these data types in new development work, and plan to modify applications that currently use them. In alternativa, usare i tipi di dati nvarchar(max), varchar(max)e varbinary(max) .Use nvarchar(max), varchar(max), and varbinary(max) instead.

Lunghezze del prefisso per il caricamento bulk Prefix Lengths for Bulk Import

Quando si esegue l'importazione bulk di dati, la lunghezza del prefisso corrisponde al valore specificato al momento della creazione del file di dati.When data is bulk imported, the prefix length is the value that was specified when the data file was created originally. Se il file di dati non è stato creato da un comando bcp , i caratteri di prefisso di lunghezza probabilmente non esistono.If the data file was not created by a bcp command, length prefix characters probably do not exist. In tal caso, specificare il valore 0 come lunghezza del prefisso.In this instance, specify 0 for the prefix length.

Nota

Per specificare la lunghezza del prefisso in un file di dati non creato usando il comando bcp, usare le lunghezze indicate in Lunghezze del prefisso per l'esportazione bulk, più indietro in questo argomento.To specify a prefix length in a data file that was not created by using bcp, use the lengths provided in Prefix Lengths for Bulk Export, earlier in this topic.

Vedere ancheSee Also

Utilità bcp bcp Utility
Tipi di dati (Transact-SQL) Data Types (Transact-SQL)
Specificare la lunghezza del campo tramite bcp (SQL Server) Specify Field Length by Using bcp (SQL Server)
Impostazione dei caratteri di terminazione del campo e della riga (SQL Server) Specify Field and Row Terminators (SQL Server)
Specifica del tipo di archiviazione di file tramite bcp (SQL Server)Specify File Storage Type by Using bcp (SQL Server)