Armazenamento de dados em formato de caractere
Como os dados formatados por caractere são armazenados em um arquivo de dados exportado, depende de como os dados foram armazenados na tabela MicrosoftSQL Server. Dois padrões de armazenamento são importantes, conforme segue:
Dados SQL Serverchar
Outros tipos de dados convertidos para armazenamento de char
Padrões de armazenamento para dados de caracteres do SQL Server
Os dados são armazenados sempre no arquivo de dados SQL Serverchar de acordo com o tamanho completo da coluna definida. Por exemplo, uma coluna definida como char(10) sempre ocupa 10 caracteres no arquivo de dados independente do comprimento dos dados armazenados na coluna. Se os dados char forem mais curtos que o tamanho do campo, serão acrescentados espaços aos dados como preenchimento; para obter mais informações, consulte SET ANSI_PADDING (Transact-SQL). No entanto, para o tipo varchar, é armazenado somente o número real de caracteres a menos que você escolha um prefixo ou um sufixo.
Padrões de armazenamento para outros tipos de dados convertidos para dados de caracteres
A quantidade de espaço de armazenamento alocada no arquivo de dados para os dados do tipo não-caractere armazenada em formato de caractere é determinada pela combinação do tamanho do campo e comprimento dos prefixos e sufixos, conforme segue:
Com um comprimento do prefixo de 0 e nenhum sufixo, o campo é tratado como se fosse de tamanho fixo, como especificado pelo valor do tamanho do campo. Se for especificar um comprimento do prefixo de 0 e nenhum sufixo, o utilitário bcp aloca a quantidade máxima de espaço mostrada no prompt de tamanho do campo porque este é o espaço máximo que pode ser necessário para o tipo de dados em questão. Esta prática possibilita determinar onde um campo termina e o seguinte começa.
Com um comprimento do prefixo de 0 e um sufixo, o valor do tamanho do campo é ignorado. O espaço de armazenamento usado pelo campo é o comprimento dos dados, somado a qualquer sufixo.
Importante A especificação de um prefixo e de um sufixo só é suportada em arquivos de formato não-XML.
Com um comprimento do prefixo de 1, 2 ou 4, o valor do tamanho do campo é ignorado. O espaço usado pelo campo é seu tamanho, o comprimento dos prefixos do campo, somado a qualquer sufixo.
Em todos os casos da lista acima, você pode criar um arquivo de dados para depois recarregar no SQL Server o que mantém o espaço de armazenamento ao mínimo. Para minimizar o espaço de armazenamento, use um caractere de comprimento do prefixo com o tipo de armazenamento de arquivo padrão e o tamanho do campo padrão.
Exemplos
Os exemplos a seguir ilustram a interação entre o tamanho do campo, o comprimento do prefixo e sufixos quando os dados são armazenados em formato char. Um valor de comprimento do prefixo, caso exista, é representado por P. Um sufixo, caso exista, é representado por T. As reticências (...) indicam que o padrão se repete para todos os campos.
Exemplos de padrões de armazenamento para Dados de caracteres do SQL Server
Observação |
---|
Os dados char sempre serão armazenados com o comprimento completo (quer dizer, com um ou mais espaços,' ', como preenchimento). |
O esquema de tabela é t1 (c1 char(8)). Os exemplos assumem um valor de 5 caracteres (representados como Hello) armazenado em um campo cujo tamanho é de 8 caracteres. Em cada um dos exemplos de campos de dados, devem ser acrescentados sempre três espaços ao valor de 5 caracteres Hello. Os espaços acrescentados são representados por três pontos (...).
|
Comprimento do prefixo = 0 |
Comprimento do prefixo = 1, 2, ou 4 |
---|---|---|
Sem sufixo: |
Hello∙∙∙Hello∙∙∙... |
PHello∙∙∙PHello∙∙∙... |
Sufixo: |
Hello∙∙∙THello∙∙∙T... |
PHello∙∙∙TPHello∙∙∙T...
Observação
Este exemplo se aplica somente a formatos de arquivo não-XML .
|
Exemplos de padrões de armazenamento para tipos de dados do tipo não-caractere quando convertidos para armazenamento do tipo caractere
O esquema de tabela é t1 (c1 int) e cada linha tem um valor inteiro de 999.
Observação |
---|
Para dados convertidos para armazenamento char na presença de um comprimento do prefixo de 1, 2 ou 4 ou um terminador de campo, o acréscimo de espaços ao valor de dados é desnecessário. |
|
Comprimento do prefixo = 0 |
Comprimento do prefixo = 1, 2, ou 4 |
---|---|---|
Sem sufixo: |
999∙∙999∙∙... |
P999P999... |
Sufixo: |
999T999T... |
P999TP999T...
Observação
Este exemplo se aplica somente a formatos de arquivo não-XML.
|
Observação |
---|
Se você não especificar um comprimento do prefixo ou sufixo, o valor inteiro será armazenado usando 12 bytes, com os últimos 9 bytes armazenando caracteres de espaço. |