Archiviazione di dati in formato carattere

La modalità di archiviazione dei dati carattere in un file di dati esportato dipende da come i dati sono stati archiviati nella tabella di Microsoft SQL Server. Esistono due criteri di archiviazione rilevanti:

  • SQL Server Dati char

  • Altri tipi di dati convertiti in archiviazione char

Criteri di archiviazione per dati carattere SQL Server

SQL Server I dati char vengono sempre archiviati nel file di dati come lunghezza completa della colonna definita. Ad esempio, una colonna definita come char(10) occupa sempre 10 caratteri nel file di dati indipendentemente dalla lunghezza dei dati memorizzati nella colonna. Se i dati char sono più brevi della lunghezza del campo, ai dati vengono aggiunti spazi come riempimento. Per ulteriori informazioni, vedere SET ANSI_PADDING (Transact-SQL). Tuttavia, per il tipo varchar, viene archiviato solo il numero effettivo di caratteri, a meno che venga selezionato un prefisso o un carattere di terminazione.

Criteri di archiviazione per altri tipi di dati convertiti in dati carattere

La quantità di spazio di archiviazione allocato nel file di dati per i dati non carattere memorizzati in formato carattere è determinato dalla combinazione tra lunghezza del campo, lunghezza del prefisso e caratteri di terminazione, come segue:

  • Con lunghezza del prefisso pari a 0 e nessun carattere di terminazione, il campo viene elaborato come se avesse lunghezza fissa, come specificato nel valore relativo alla lunghezza del campo. Se si imposta una lunghezza di prefisso uguale a 0 e non si specifica alcun carattere di terminazione, l'utilità bcp alloca la massima quantità di spazio indicata nella richiesta di specifica della lunghezza del campo, in quanto corrisponde allo spazio massimo che potrebbe essere necessario per il tipo di dati. Questo rende possibile determinare dove un campo termina e dove inizia il successivo.

  • Con una lunghezza di prefisso pari a 0 e un terminatore, il valore relativo alla lunghezza del campo viene ignorato. Lo spazio di archiviazione utilizzato dal campo è pari alla lunghezza del database, più eventuali caratteri di terminazione.

    Nota importanteImportante

    L'impostazione di un prefisso e di un carattere di terminazione è supportata solo nei file di formato non XML.

  • Con una lunghezza di prefisso pari a 1, 2, o 4, il valore relativo alla lunghezza del campo viene ignorato. Lo spazio utilizzato dal campo è pari alla sua lunghezza, più la lunghezza di eventuali prefissi più eventuali caratteri di terminazione.

In tutti i casi precedenti, è possibile creare un file di dati per ripetere successivamente il caricamento in SQL Server mantenendo così lo spazio di archiviazione al minimo. Per ridurre al minimo lo spazio di archiviazione, utilizzare un carattere di lunghezza prefisso insieme al tipo di archiviazione di file predefinito e alla lunghezza predefinita del campo.

Esempi

Nei seguenti esempi viene descritta l'interazione tra lunghezza del campo, lunghezza del prefisso e caratteri di terminazione quando i dati vengono archiviati in formato char. Un valore di lunghezza prefisso, se presente, è rappresentato da P. Un carattere di terminazione, se presente, è rappresentato da T. Un ellissi (...) indica che lo schema si ripete per ogni campo.

Esempi di criteri di archiviazione per dati carattere SQL Server:

Nota

I dati char vengono sempre archiviati come lunghezza completa, ovvero con uno o più spazi, ' ' come riempimento.

Lo schema della tabella è t1 (c1 char(8)). Negli esempi si presume un valore a 5 caratteri (rappresentato come Hello), memorizzato in un campo la cui lunghezza è di 8 caratteri. In ognuno dei campi dati di esempio è necessario aggiungere sempre tre spazi al valore Hello di 5 caratteri. Gli spazi aggiunti sono rappresentati da tre punti (∙∙∙).

 

Lunghezza prefisso = 0

Lunghezza prefisso = 1, 2 o 4

Nessun carattere di terminazione:

Hello∙∙∙Hello∙∙∙...

PHello∙∙∙PHello∙∙∙...

Carattere di terminazione:

Hello∙∙∙THello∙∙∙T...

PHello∙∙∙TPHello∙∙∙T...

NotaNota
Questo esempio è valido solo per i file di formato non XML.

Esempi di criteri di archiviazione per tipi di dati non carattere quando convertiti in archiviazione di tipo carattere

Lo schema della tabella è t1 (c1 int) e ogni riga ha un valore integer di 999.

Nota

Per i dati convertiti in archiviazione char in presenza di una lunghezza del prefisso di 1, 2 oppure 4 o di un carattere di terminazione di campo, l'aggiunta di spazi al valore dei dati non è necessaria.

 

Lunghezza prefisso = 0

Lunghezza prefisso = 1, 2 o 4

Nessun carattere di terminazione:

999∙∙999∙∙...

P999P999...

Carattere di terminazione:

999T999T...

P999TP999T...

NotaNota
Questo esempio è valido solo per i file di formato non XML.

Nota

Se non si specifica una lunghezza del prefisso o un carattere di terminazione, il valore integer viene memorizzato utilizzando 12 byte, con caratteri spazio memorizzati negli ultimi nove 9 byte.