Importar datos con formato nativo y de caracteres de versiones anteriores de SQL Server

Para utilizar bcp para importar datos con formato nativo y de caracteres de Microsoft SQL Server 2005 o anterior, utilice el modificador -V. Cuando se especifica el modificador -V, SQL Server 2008 R2 utiliza los tipos de datos de versiones anteriores de Microsoft SQL Server y el formato del archivo de datos es el mismo que el de esa versión anterior.

Para especificar si el archivo de datos es de una versión anterior de SQL Server, utilice el modificador -V como se indica a continuación:

Versión de SQL Server

Calificador

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

Interpretación de los tipos de datos de SQL Server

SQL Server 2005 y versiones posteriores tienen compatibilidad para algunos nuevos tipos. Si desea importar un tipo de datos nuevo en una versión anterior, debe almacenarlo en un formato que pueda leer la versión anterior de los clientes bcp. La tabla siguiente resume cómo se convierten los tipos de datos nuevos de SQL Server 2005 por compatibilidad con las versiones anteriores de SQL Server.

Nuevos tipos de datos de SQL Server 2005

Tipos de datos compatibles de la versión 6x

Tipos de datos compatibles de la versión 70

Tipos de datos compatibles de la versión 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

* Este tipo es compatible en modo nativo.

1 UDT significa tipo definido por el usuario.

Exportar desde SQL Server 2005 y versiones posteriores

Si realiza una exportación masiva de datos mediante el modificador –V80 de SQL Server 2005 o versiones posteriores, los datos nvarchar(max), varchar(max), varbinary(max), XML y UDT en formato nativo se almacenan con un prefijo de 4 bytes, como datos text, image y ntext, en lugar de usar un prefijo de 8 bytes, que es el valor predeterminado en SQL Server 2005 y versiones posteriores.

Exportar desde SQL Server 7.0 o SQL Server 2000

Cuando realice una exportación masiva de datos de SQL Server 7.0 o SQL Server 2000, considere lo siguiente:

  • En SQL Server 7.0 y SQL Server 2000, el valor 0 representa una columna de longitud cero.

  • El formato de almacenamiento de los datos bigint exportados de SQL Server 7.0 depende del formato de los datos del archivo de datos:

    • En un archivo de datos en modo nativo o con formato nativo Unicode, los datos bigint se almacenan como decimal(19,0).

    • En un archivo de datos en modo de carácter o con formato de caracteres Unicode, los datos bigint se almacenan como una cadena de caracteres o Unicode de [-]digits, (por ejemplo, –25688904432).

Copiar valores de fecha

A partir de SQL Server 7.0, bcp utiliza la API de copia masiva ODBC. Por tanto, para importar valores de fecha en SQL Server 7.0 o posterior, bcp utiliza el formato de fecha ODBC (yyyy-mm-dd hh:mm:ss[.f...]).

El comando bcp exporta los archivos de datos con formato de caracteres utilizando el formato predeterminado ODBC para los valores datetime y smalldatetime. Por ejemplo, una columna datetime que contiene la fecha 12 Aug 1998 se copia de forma masiva en un archivo de datos como la cadena de caracteres 1998-08-12 00:00:00.000.

Nota importanteImportante

Cuando importe datos en un campo smalldatetime utilizando bcp, asegúrese de que el valor de los segundos es 00.000; de lo contrario, se producirá un error. El tipo de datos smalldatetime contiene únicamente valores hasta el minuto más cercano. BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) no darán error en esta instancia, pero truncarán el valor de los segundos.