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 2000 ó anterior, utilice el modificador -V. Cuando se especifica el modificador -V, Microsoft SQL Server 2005 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.

[!NOTA] El modificador -V amplía la funcionalidad del modificador -6 que se utiliza en Microsoft SQL Server 7.0. Utilizar -6 es lo mismo que utilizar -V60 ó -V65. Si bien SQL Server sigue admitiendo el modificador -6, ha quedado obsoleto. Por tanto, se recomienda el uso de -V.

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

Microsoft SQL Server 6.0

-V60

Microsoft SQL Server 6.5

-V65

SQL Server 7.0

-V70

SQL Server 2000

-V80

Interpretación de los tipos de datos de SQL Server 2005

SQL Server 2005 agregó compatibilidad con algunos tipos nuevos. Si desea importar un tipo de datos nuevo de SQL Server 2005 a SQL Server 2000 ó anterior, debe almacenarlos 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

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

Exportar desde SQL Server 7.0 ó anterior

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

  • El formato de almacenamiento de los datos bigint exportados de SQL Server 7.0, SQL Server 6.5 ó SQL Server 6.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).
  • Para una tabla con columnas char o varchar, cuando se exportan datos en SQL Server 6.0 ó SQL Server 6.5, bcp agrega un prefijo de 1 byte por cada archivo de datos equivalente a la longitud de los datos. En una tabla con datos numeric, la información se escribe en el archivo de datos con el formato nativo de SQL Server.
  • En SQL Server 7.0 y SQL Server 2000, el valor 0 representa una columna de longitud cero.

Exportar desde SQL Server 6.5 ó 6.0

Además, si realiza una exportación masiva de datos de SQL Server 6.5 ó SQL Server 6.0, considere lo siguiente:

  • En SQL Server 6.5 ó anterior, bcp representaba los valores null como un valor de longitud 0, mientras que null se almacena ahora como el valor de longitud -1.
  • Los valores null en columnas bit se escriben como el valor 0 porque SQL Server 6.5 y versiones anteriores no admiten datos bit que acepten valores null.
  • La utilidad bcp no genera formatos de fecha de SQL Server 6.0 ó SQL Server 6.5 para datos datetime o smalldatetime. Las fechas siempre se escriben en formato ODBC.
  • El uso del modificador -V65 puede afectar al rendimiento debido a la carga de trabajo necesaria para realizar varias conversiones de fecha.
  • Los valores de los datos difieren en SQL Server 6.5 ó anterior. Para obtener más información, vea la siguiente sección, "Copiar valores de fecha".

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...]).

En cambio, en SQL Server 6.5 ó anterior, bcp utiliza la API de copia masiva DB-Library y el formato de fecha DB-Library. Para exportar formatos de fecha a SQL Server 7.0 y posterior desde SQL Server 6.5 ó anterior, utilice el modificador -V65. Si especifica -V65, el comando bcp intenta primero convertir el valor de fecha en el archivo de datos utilizando el formato de fecha ODBC. Si no se puede realizar la conversión, bcp intenta convertir el valor de fecha utilizando los formatos DB-Library.

Incluso si se especifica -V65, el comando bcp exporta siempre 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.

ms191212.note(es-es,SQL.90).gifImportante:
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.

El uso del modificador -V65 puede afectar al rendimiento debido a la carga de trabajo necesaria para realizar varias conversiones de fecha.

Vea también

Conceptos

Formatos de datos para importar o exportar datos

Otros recursos

bcp (utilidad)
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Tipos de datos (Transact-SQL)
Compatibilidad con versiones anteriores del Motor de base de datos de SQL Server 2005
CAST y CONVERT (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005