Compartilhar via


Especificar tamanho do campo usando bcp (SQL Server)

O tamanho do campo indica o número máximo de caracteres que são exigidos para representar dados em formato de caractere. O tamanho do campo já será 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 comando bcp solicitará o tamanho do campo, os tamanhos de campo padrão e o impacto do tamanho de campo no armazenamento de dados em arquivos de dados que contêm dados char.

O bcp solicita um tamanho de campo

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 tamanho de cada campo de dados, da seguinte maneira:

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

Para obter um exemplo que mostra esse prompt no contexto, consulte Especificar formatos de dados para compatibilidade usando bcp (SQL Server).

ObservaçãoObservação

Depois da especificação interativa de 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).

A solicitação do tamanho do campo pelo comando bcp depende de vários fatores:

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

  • Ao converter dados que não contêm caracteres em dados de caractere, o bcp sugerirá um tamanho de 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 de campo. Os dados são armazenados no formato de representação de dados nativo (formato nativo) do Microsoft SQL Server.

Usando tamanhos de campo padrão

Geralmente, o Microsoft recomenda que você aceite os valores padrão sugeridos pelo bcp para o tamanho de 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 money e datetime quando apenas parte do campo esperado ocorre no arquivo de dados; por exemplo, quando um valor datetime mm/dd/yy é especificado sem o componente de hora e é, portanto, mais curto do que os 24 caracteres de comprimento esperados de um valor datetime no formato 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 (termo definido pelo usuário)

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.

Consulte também

Referência

Utilitário bcp

Tipos de dados (Transact-SQL)

Conceitos

Especificar terminadores de campo e linha (SQL Server)

Especificar o tamanho de prefixo em arquivos de dados usando bcp (SQL Server)

Especificar tipo de armazenamento de arquivo usando bcp (SQL Server)

Especificar tamanho do campo usando bcp (SQL Server)

Manter valores nulos ou use os valores padrão durante a importação em massa (SQL Server)