Especificando tamanho de prefixo em arquivos de dados
Para fornecer o armazenamento de arquivo mais compacto para a exportação de dados em massa em formato nativo para um arquivo de dados, o comando bcp precede cada campo com um ou mais caracteres que indica o comprimento do campo. Esses caracteres são chamados caracteres de prefixo de comprimento.
O prompt bcp para tamanho de prefixo
Se um comando interativo bcp contiver a opção in ou out sem a opção de arquivo de formato (-f) ou uma opção de formato de dados (- n, -c, -w, ou -N), o comando solicitará o tamanho de prefixo de cada campo de dados, como segue:
Enter prefix length of field <field_name> [<default>]:
Se você especificar 0, bcp solicita o comprimento do campo (para um tipo de dados de caractere) ou um terminador de campo (para um tipo de não-caractere nativo). Para obter um exemplo que mostra esse prompt em contexto, consulte Especificando formatos de dados para compatibilidade usando bcp.
Observação |
---|
Depois de especificar interativamente todos os campos em um comando bcp, o comando solicita que você salve suas respostas para cada campo em um arquivo de formato não-XML. Para obter mais informações sobre arquivos de formato não-XML, consulte Compreendendo arquivos de formato não XML. |
Visão geral de tamanho de prefixo
Para armazenar o comprimento do prefixo de um campo, você precisa de bytes suficientes para representar o comprimento máximo do campo. O número de bytes que também são necessários depende do tipo de armazenamento de arquivo, a nulabilidade de uma coluna, se os dados estão sendo armazenados no arquivo de dados em seu nativo ou no formato de caractere. Por exemplo, um tipo de dados text ou image requer quatro caracteres de prefixo para armazenar o comprimento do campo, mas um tipo de dados varchar requer dois caracteres. No arquivo de dados, estes caracteres de prefixo de comprimento são armazenados no formato de dados binário interno de SQL Server.
Importante |
---|
Quando você usa formato nativo usa prefixos de comprimento em vez de terminadores de campo. Dados de formato nativo podem conflitar com terminadores porque um arquivo de dados de formato nativo é armazenado no formato de dados binário interno do SQL Server. |
Comprimentos do prefixo para exportação em massa
Observação |
---|
O valor padrão que é fornecido ao prompt de comprimento do prefixo quando você exporta um campo indica o comprimento do prefixo mais eficiente para o campo. |
Valores nulos são representados como um campo vazio. Para indicar que o campo está vazio (representado por NULL), o prefixo de campo contém o valor -1; ou seja, ele necessita de pelo menos 1 byte. Note que se uma coluna da tabela SQL Server permitir valores nulos, a coluna necessitará um tamanho de prefixo 1 ou maior, dependendo do tipo de armazenamento de arquivo.
Quando você exportar em massa dados e armazenar em tipos de dados nativos ou formato de caractere, use os comprimentos do prefixo mostrados na tabela a seguir.
SQL Server Tipo de dados |
Formato nativo NOT NULL |
Formato nativo NULL |
Formato de caractere NOT NULL |
Formato de caractere 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 (um tipo de dados definido pelo usuário) |
8 |
8 |
8 |
8 |
XML |
8 |
8 |
8 |
8 |
1 O ntext, texte tipos de dados image serão removidos em uma versão futura de SQL Server. Evite usar esses tipos de dados em novo projeto de desenvolvimento e planeje modificar os aplicativos que atualmente os utilizam. Use nvarchar(max), varchar(max), e varbinary(max)em seu lugar. Para obter mais informações, consulte Usando tipos de dados de valor grande.
Para obter mais informações, consulte Armazenamento de dados em formato de caractere.
Comprimentos do prefixo para importação em massa
Quando dados são importados em massa, o comprimento do prefixo é o valor que foi especificado quando o arquivo de dados foi criado originalmente. Se o arquivo de dados não foi criado por um comando bcp, caracteres de prefixo de comprimento provavelmente não existirão. Nessa instância, especifique 0 para o comprimento do prefixo.
Observação |
---|
Para especificar um comprimento do prefixo em um arquivo de dados que não foi criado usando bcp, use os comprimentos fornecidos em "Comprimentos do prefixo para importação em massa", acima nesse tópico. |