Especificar o tamanho de prefixo em arquivos de dados usando bcp (SQL Server)
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 bcp interativo contiver a opção in ou out sem a opção de arquivo de formato (-f) ou uma opção data-format (-n, -c, -w ou -N), o comando solicitará o comprimento de cada campo de dados, da seguinte maneira:
Enter prefix length of field <field_name> [<default>]:
Se você especificar 0, o bcp solicitará o comprimento do campo (para um tipo de dados de caractere) ou um terminador de campo (para um tipo de não caractere nativo).
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 Arquivos de formato não XML (SQL Server). |
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, da nulidade de uma coluna e do fato de os dados serem 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 dados em massa e armazená-los 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 Os tipos de dados ntext, text e image serão removidos em uma versão futura do SQL Server. Evite usar esses tipos de dados em novo projeto de desenvolvimento e planeje modificar os aplicativos que os utilizam atualmente. Use nvarchar(max), varchar(max) e varbinary(max) em seu lugar.
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 o bcp, use os comprimentos fornecidos em Comprimentos do prefixo para exportação em massa, anteriormente neste tópico. |
Consulte também
Referência
Conceitos
Especificar tamanho do campo usando bcp (SQL Server)
Especificar terminadores de campo e linha (SQL Server)
Especificar tipo de armazenamento de arquivo usando bcp (SQL Server)