Especificar o tamanho do campo usando o 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ê tiver indicado 0 para o comprimento do prefixo, o comando bcp solicitará o comprimento do campo, os comprimentos de campo padrão e o impacto do comprimento do campo no armazenamento de dados em arquivos de dados que contêm char
dados.
O bcp solicita um tamanho de campo
Se um comando bcp interativo contiver a opção in ou out sem a opção do arquivo de formatos (-f) ou uma opção do formato de dados (-n, -c, -w ou -N), o comando solicitará o comprimento de campo 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, veja Especificar formatos de dados para compatibilidade usando bcp (SQL Server).
Observação
Depois que você especificar interativamente todos os campos em um comando bcp, o comando solicitará que salve suas respostas para cada campo em um arquivo de formato não XML. Para saber mais sobre arquivos de formato não XML, confira Arquivos de formato não XML (SQL Server).
A solicitação do comprimento 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 comprimento de campo.
Quando dados que não contêm caracteres são convertidos em dados de caracteres, o bcp sugere um comprimento de campo padrão grande o suficiente para armazenar os dados.
Se o tipo de armazenamento de arquivos for não caractere, o comando bcp não solicitará um comprimento 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, a Microsoft recomenda que você aceite os valores padrão sugeridos pelo bcp para o comprimento 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 datetime
dados e especificar um comprimento de campo inferior a 26 bytes para a cadeia de caracteres, o utilitário bcp truncará os dados sem uma mensagem de erro.
Importante
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 ocorre com os money
tipos de dados e datetime
quando apenas parte do campo esperado ocorre no arquivo de dados; por exemplo, quando um datetime
valor de mm/dd/yy é especificado sem o componente de tempo e, portanto, é menor que o comprimento esperado de 24 caracteres de um datetime
valor no char
formato. 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 decimal
tipos de dados andnumeric
, consulte decimal e numérico (Transact-SQL).
Observaçã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 |
decimal 1 |
* |
numeric 1 |
* |
uniqueidentifier |
16 |
timestamp |
8 |
1 Para obter mais informações sobre os decimal
tipos de dados andnumeric
, consulte decimal e numérico (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.
Confira também
Utilitário bcp
Tipos de dados (Transact-SQL)
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)
Manter valores nulos ou use os valores padrão durante a importação em massa (SQL Server)