Share via


Especificando tamanho do campo usando bcp

O tamanho do campo indica o número de máximo de caracteres que são exigidos para representar dados em formato de caractere. O tamanho do campo já é conhecido se os dados forem armazenados no formato nativo; por exemplo, o tipo de dados int usa 4 bytes. Se você indicou 0 para o comprimento do prefixo, o comandobcp solicitará o tamanho do campo, os tamanhos dos campos padrão e o impacto de tamanho do campo no armazenamento de dados em arquivos de dados que contêm dados de char.

O bcp solicita um tamanho de campo

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 do campo de cada campo de dados, como se segue:

Enter length of field <field_name> [<default>]:

Para obter um exemplo que mostra esse prompt no contexto, consulte Especificando formatos de dados para compatibilidade usando bcp.

ObservaçãoObservação

Depois que você especificar interativamente tudo sobre os campos em um comando bcp, o comando solicitará que salve suas respostas para cada campo em um formato de arquivo não XML . Para obter mais informações sobre arquivos de formato não XML, consulte Compreendendo arquivos de formato não XML.

Um comando bcp solicita o tamanho do campo dependendo de vários fatores, como os que se seguem:

  • Quando você copiar tipos de dados que não são de comprimento fixo e especificar o comprimento do prefixo em 0, obcp solicitará o tamanho do campo.

  • Ao converter dados de não caractere para dados de caractere, o bcp sugere um tamanho do campo padrão grande o suficiente para armazenar os dados.

  • Se o tipo de armazenamento de arquivo for não caractere, o comando bcp não solicitará um tamanho do campo. Os dados são armazenados no formato de representação de dados nativo (formato nativo) do Microsoft SQL Server.

Usando tamanhos dos campos padrão

Geralmente, o Microsoft recomenda que você aceite os valores padrão sugeridos pelo bcp para o tamanho do campo. Quando um arquivo de dados de modo de caractere é criado, usar o tamanho do campo padrão assegura que os dados não serão truncados e que não ocorram erros de estouro numéricos.

Se você especificar um tamanho do campo incorreto, poderão ocorrer problemas. Por exemplo, se você copiar dados numéricos e especificar um tamanho do campo muito curto para obter os dados, o utilitário do bcp imprimirá uma mensagem de estouro e não copiará os dados. Além disso, se você exportar dados datetime e especificar um tamanho do campo menor que 26 bytes para a cadeia de caracteres, o utilitário do bcp truncará os dados sem uma mensagem de erro.

Observação importanteImportante

Quando a opção de tamanho padrão é usada, o SQL Server espera ler uma cadeia de caracteres inteira. Em algumas situações, o uso de um tamanho do campo padrão pode conduzir a um erro "fim de arquivo inesperado". Normalmente, esse erro acontece com os tipos de dados de money e datetime, quando apenas uma parte do campo esperado ocorrer no arquivo de dados; por exemplo, quando um valor datetime de mm./dd/yy é especificado sem o componente de hora e é, então, mais curto que os 24 caracteres de comprimento esperados de um valor de datetime em formato de char. Para evitar esse tipo de erro, use terminadores de campos ou campos de dados de comprimento fixo ou altere o tamanho do campo padrão especificando outro valor.

Tamanhos do campo padrão para armazenamento de arquivo de caractere

A tabela a seguir lista os tamanhos dos campos padrão para obter os dados a serem armazenados como armazenamento de arquivo de caractere. Dados anuláveis são do mesmo comprimento que dados de não anuláveis.

Tipo de dados

Comprimento padrão (caracteres)

char

Comprimento definido para a coluna

varchar

Comprimento definido para a coluna

nchar

Duas vezes o comprimento definido para a coluna

nvarchar

Duas vezes o comprimento definido para a coluna

Text

0

ntext

0

bit

1

binary

Duas vezes o comprimento definido para a coluna + 1

varbinary

Duas vezes o comprimento definido para a coluna + 1

image

0

datetime

24

smalldatetime

24

float

30

real

30

int

12

bigint

19

smallint

7

tinyint

5

money

30

smallmoney

30

decimal

41*

numeric

41*

uniqueidentifier

37

timestamp

17

varchar(max)

0

varbinary(max)

0

nvarchar(max)

0

UDT

Comprimento da coluna UDT (User-defined Term)

XML

0

*Para obter mais informações sobre os tipos de dados decimal e numeric, consulte decimal e numeric (Transact-SQL).

ObservaçãoObservação

Uma coluna do tipo tinyint pode ter valores de 0 a 255; o número de máximo de caracteres necessários para representar qualquer número naquele intervalo é três (representando valores de 100 a 255).

Tamanhos do campo padrão para armazenamento de arquivo nativo

A tabela seguinte lista os tamanhos dos campos padrão para os dados a serem armazenados como um tipo de armazenamento de arquivo nativo. Dados anuláveis são do mesmo comprimento que dados de não anuláveis e os dados de caractere sempre são armazenados em formato de caractere.

Tipo de dados

Comprimento padrão (caracteres)

bit

1

binary

Comprimento definido para a coluna

varbinary

Comprimento definido para a coluna

image

0

datetime

8

smalldatetime

4

float

8

real

4

int

4

bigint

8

smallint

2

tinyint

1

money

8

smallmoney

4

decimal1

*

numeric1

*

uniqueidentifier

16

timestamp

8

1 Para obter mais informações sobre os tipos de dados decimal e numeric, consulte decimal e numeric (Transact-SQL).

Em todos os casos anteriores, para criar um arquivo de dados para recarregar posteriormente no SQL Server que mantenha o espaço de armazenamento em um mínimo, use um prefixo de comprimento com o tipo de armazenamento de arquivo padrão e o tamanho do campo padrão.