Importando dados de formato de caractere e nativo de versões anteriores do SQL Server
Para usar o bcp para importar dados de formato de caractere e nativo do Microsoft SQL Server 2005 ou versões anteriores, use a opção - V. Quando a opção -V é especificada, o SQL Server 2008 R2 usa tipos de dados de versões anteriores do Microsoft SQL Server, e o formato de arquivo de dados será o mesmo que o da versão anterior.
Para especificar se o arquivo de dados está no nível de uma versão anterior do SQL Server, use a opção -V como segue:
Versão do SQL Server |
Qualificador |
---|---|
SQL Server 7.0 |
-V70 |
SQL Server 2000 |
-V80 |
SQL Server 2005 |
-V90 |
Interpretação de tipos de dados do SQL Server
O SQL Server 2005 e versões posteriores oferecem suporte para alguns novos tipos. Para importar um novo tipo de dados para uma versão anterior, o tipo de dados deve ser armazenado em um formato legível pelos clientes bcp antigos. A tabela a seguir resume como os novos tipos de dados do SQL Server 2005 são convertidos para compatibilidade com versões anteriores do SQL Server.
Novos tipos de dados no SQL Server 2005 |
Tipos de dados compatíveis na versão 6x |
Tipos de dados compatíveis na versão 70 |
Tipos de dados compatíveis na versão 80 |
---|---|---|---|
bigint |
decimal |
decimal |
* |
sql_variant |
text |
nvarchar(4000) |
* |
varchar(max) |
text |
text |
text |
nvarchar(max) |
ntext |
ntext |
ntext |
varbinary(max) |
image |
image |
image |
XML |
ntext |
ntext |
ntext |
UDT1 |
image |
image |
image |
* Esse tipo tem suporte nativo.
1 UDT indica um tipo definido pelo usuário.
Exportando do SQL Server 2005 e versões posteriores
Quando você exporta dados em massa usando a opção –V80 do SQL Server 2005 ou versões posteriores e nvarchar(max), varchar(max), varbinary(max), XML e UDT, dados no modo nativo são armazenados com um prefixo de 4 bytes, como dados text, image e ntext, em vez de um prefixo de 8 bytes, que é o padrão do SQL Server 2005 e versões posteriores.
Exportando do SQL Server 7.0 ou SQL Server 2000
Ao exportar dados em massa do SQL Server 7.0 ou SQL Server 2000, considere o seguinte:
No SQL Server 7.0 e SQL Server 2000, o valor 0 representa uma coluna de comprimento zero.
O formato de armazenamento para dados bigint exportados do SQL Server 7.0 depende do formato de dados do arquivo de dados:
No modo nativo ou arquivo de dados de formato nativo Unicode, os dados bigint são armazenados como decimal(19,0).
No modo de caractere ou arquivo de dados de formato de caracteres Unicode, os dados bigint são armazenados como um caractere ou uma cadeia de caracteres [-]digits(por exemplo, -25688904432).
Copiando valores de dados
Começando com o SQL Server 7.0, o bcp usa o API de cópia em massa ODBC. Portanto, para importar valores de data no SQL Server 7.0 ou versões posteriores, o bcp usa o formato de dados ODBC (yyyy-mm-dd hh:mm:ss[.f...]).
O comando bcp exporta arquivos de dados de formato de caractere usando o formato padrão ODBC para os valores datetime e smalldatetime. Por exemplo, uma coluna datetime que contém a data 12 Aug 1998 é copiada em massa em um arquivo de dados como a cadeia de caracteres 1998-08-12 00:00:00.000.
Importante |
---|
Ao importar dados em um campo smalldatetime com o bcp, verifique se o valor por segundo é 00.000; caso contrário a operação falhará. O tipo de dados smalldatetime só mantém valores do minuto mais próximo. BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) não falharão nessa instância, mas truncarão o valor de segundos. |
Consulte também