Impostazione della lunghezza del prefisso in file di dati

Per implementare il tipo di archiviazione più compatto durante l'esportazione bulk 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. Tali caratteri sono denominati caratteri per il prefisso di lunghezza.

Richiesta della lunghezza del prefisso da parte di bcp

Se un comando bcp interattivo contiene l'opzione in o out, ma non l'opzione del file di formato (-f) o un'opzione di formato dati (-n, -c, -w o -N), il comando richiede la lunghezza del prefisso per ciascun campo dati, come segue:

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). Per un esempio contestualizzato di tale richiesta, vedere Impostazione dei formati di dati per la compatibilità mediante bcp.

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. Per ulteriori informazioni sui file di formato non XML, vedere Informazioni sui file di formato non XML.

Panoramica sulla lunghezza del prefisso

Per archiviare la lunghezza del prefisso di un campo, è necessario un numero di byte sufficiente a rappresentare la lunghezza massima del campo. 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. 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. I caratteri per il prefisso di lunghezza vengono archiviati nel file di dati utilizzando il formato binario interno di SQL Server.

Nota importanteImportante

Per i dati in formato nativo, utilizzare i prefissi di lunghezza anziché i caratteri di terminazione del campo. È 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 Server.

Lunghezze del prefisso per l'esportazione bulk

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.

I valori Null vengono rappresentati come campo vuoto. Per indicare che il campo è vuoto, ovvero che rappresenta un valore NULL, il prefisso contiene il valore -1, quindi è necessario almeno 1 byte. Si noti che per le colonne di tabella di SQL Server che consentono valori Null è necessaria una lunghezza del prefisso maggiore o uguale a 1, a seconda del tipo di archiviazione di file.

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:

SQL Server

Tipo di dati

Formato nativo

NOT NULL

Formato nativo

NULL

Formato carattere

NOT NULL

Formato carattere

NULL

char

2

2

2

2

varchar

2

2

2

2

nchar

2

2

2

2

nvarchar

2

2

2

2

text1

4

4

4

4

ntext1

4

4

4

4

binary

2

2

2

2

varbinary

2

2

2

2

image1

4

4

4

4

datetime

0

1

0

1

smalldatetime

0

1

0

1

decimal

1

1

1

1

numeric

1

1

1

1

float

0

1

0

1

real

0

1

0

1

int

0

1

0

1

bigint

0

1

0

1

smallint

0

1

0

1

tinyint

0

1

0

1

money

0

1

0

1

smallmoney

0

1

0

1

bit

0

1

0

1

uniqueidentifier

1

1

0

1

timestamp

1

1

1

1

varchar(max)

8

8

8

8

varbinary(max)

8

8

8

8

Tipi di dati definiti dall'utente (UDT, User-defined Data Type)

8

8

8

8

XML

8

8

8

8

1 I tipi di dati ntext, text e image verranno rimossi in una versione futura di SQL 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. In alternativa utilizzare nvarchar(max), varchar(max) e varbinary(max). Per ulteriori informazioni, vedere Utilizzo di tipi di dati per valori di grandi dimensioni.

Per ulteriori informazioni, vedere Archiviazione di dati in formato carattere.

Lunghezze del prefisso per il caricamento bulk

Quando si esegue l'importazione bulk di dati, la lunghezza del prefisso corrisponde al valore specificato al momento della creazione del file di dati. Se il file di dati non è stato creato da un comando bcp, i caratteri per il prefisso di lunghezza probabilmente non esistono. In tal caso, specificare il valore 0 come lunghezza del prefisso.

Nota

Per specificare la lunghezza del prefisso in un file di dati non creato utilizzando il comando bcp, utilizzare le lunghezze indicate in "Lunghezze del prefisso per l'esportazione bulk", più indietro in questo argomento.