Condividi tramite


Specificare la lunghezza del prefisso nei file di dati tramite bcp (SQL Server)

Per implementare il tipo di archiviazione di file più compatto durante l'esportazione bulk di 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, per bcp viene richiesta la lunghezza del campo (per dati di tipo carattere) o il carattere di terminazione del campo (per dati di tipo nativo non carattere).

[!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 File in formato non XML (SQL Server).

Panoramica della lunghezza del prefisso

Per archiviare la lunghezza del prefisso di un campo, è necessario un numero di byte sufficiente per 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

UDT (tipo di dati definito dall'utente)

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).

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.

Vedere anche

Riferimento

Utilità bcp

Tipi di dati (Transact-SQL)

Concetti

Definizione della lunghezza di campo tramite bcp (SQL Server)

Impostazione dei caratteri di terminazione del campo e della riga (SQL Server)

Specifica del tipo di archiviazione di file tramite bcp (SQL Server)