Usar el formato de caracteres Unicode para importar o exportar datos

El formato de caracteres Unicode se recomienda para las transferencias masivas de datos entre varias instancias de Microsoft SQL Server mediante un archivo de datos que contenga caracteres DBCS o extendidos. El formato de datos de caracteres Unicode permite exportar datos desde un servidor mediante una página de códigos utilizada por el cliente que está realizando la operación. En esos casos, el uso del formato de caracteres Unicode tiene las siguientes ventajas:

  • Si los datos de origen y destino son de tipo Unicode, el uso del formato de caracteres Unicode mantiene todos los datos de los caracteres.

  • Si los datos de origen y destino no son de tipo Unicode, el uso del formato de caracteres Unicode minimiza la pérdida de caracteres extendidos en los datos de origen que no pueden representarse en el destino.

Los archivos de datos con formato de caracteres Unicode utilizan las convenciones de los archivos Unicode. Los primeros dos bytes del archivo son los números hexadecimales 0xFFFE. Estos bytes funcionan como marcas de orden de bytes, ya que especifican si el byte de orden alto se almacena el primero o el último en el archivo.

Nota importanteImportante

Para que un archivo de formato trabaje con un archivo de datos de caracteres Unicode, todos los campos de entrada deben ser cadenas de texto Unicode (es decir, de tamaño fijo o cadenas Unicode terminadas en caracteres).

Los datos sql_variant almacenados en un archivo de datos con formato de caracteres Unicode funcionan de la misma forma que en un archivo de datos en modo de caracteres, con la excepción de que los datos se almacenan como nchar en lugar de char. Para obtener más información acerca del formato de caracteres, vea Usar el formato de caracteres para importar o exportar datos.

Para utilizar un terminador de campo o de fila distinto al predeterminado que se proporciona con el formato de caracteres Unicode, vea Especificar terminadores de campo y de fila.

Opciones de comando para el formato de caracteres Unicode

Puede importar datos del formato de caracteres Unicode en una tabla mediante bcp, BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...). Para un comando bcp o una instrucción BULK INSERT, puede especificar el formato de datos en la línea de comandos. Para una instrucción INSERT ...SELECT * FROM OPENROWSET(BULK...)debe especificar el formato de datos en un archivo de formato.

El formato de caracteres Unicode puede usarse con las siguientes opciones de la línea de comandos:

Comando

Opción

Descripción

bcp

-w

Utiliza el formato de caracteres Unicode.

BULK INSERT

DATAFILETYPE ='widechar'

Utiliza el formato de caracteres Unicode al importar datos masivamente.

Para obtener más información, vea bcp (utilidad), BULK INSERT (Transact-SQL) o OPENROWSET (Transact-SQL).

Nota

Otra posibilidad es especificar el formato por campo en un archivo de formato. Para obtener más información, vea Archivos de formato para importar o exportar datos.

Ejemplos

En los siguientes ejemplos se muestra el modo de exportar masivamente datos con formato de caracteres Unicode mediante bcp e importar masivamente los mismos datos mediante BULK INSERT.

Tabla de ejemplo

Los ejemplos requieren la creación de una tabla denominada myTestUniCharData en la base de datos de ejemplo AdventureWorks2008R2, bajo el esquema dbo. Antes de poder ejecutar los ejemplos, debe crear esta tabla. Para crear esta tabla, en el Editor de consultas de SQL Server Management Studio, ejecute:

USE AdventureWorks2008R2;
GO
CREATE TABLE myTestUniCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

Para rellenar esta tabla y ver el contenido resultante, ejecute las siguientes instrucciones:

INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(1,'DataField2','DataField3');
INSERT INTO myTestUniCharData(Col1,Col2,Col3)
   VALUES(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData

Usar bcp para exportar masivamente datos con formato de caracteres Unicode

Para exportar datos de la tabla a un archivo de datos, use bcp con la opción out y los siguientes calificadores:

Calificadores

Descripción

-w

Especifica el formato de caracteres Unicode.

-t,

Especifica una coma (,) como terminador de campo.

NotaNota
El terminador de campo predeterminado es el carácter Unicode de tabulador (\t). Para obtener más información, vea Especificar terminadores de campo y de fila.

-T

Especifica que la utilidad bcp se conecta a SQL Server mediante una conexión de confianza usando la seguridad integrada. Si no se especifica -T, es necesario especificar -U y -P para iniciar la sesión correctamente.

En el siguiente ejemplo se exportan masivamente datos en formato de caracteres Unicode desde la tabla myTestUniCharData en un nuevo archivo de datos denominado myTestUniCharData-w.Dat que utiliza la coma (,) como terminador de campo. En el símbolo del sistema de Microsoft Windows, especifique:

bcp AdventureWorks2008R2..myTestUniCharData out C:\myTestUniCharData-w.Dat -w -t, -T

Usar BULK INSERT para importar masivamente datos con formato de caracteres Unicode

En el siguiente ejemplo se utiliza BULK INSERT para importar los datos del archivo de datos myTestUniCharData-w.Dat a la tabla myTestUniCharData. Es necesario declarar en la instrucción el terminador de campo no predeterminado (,). En el Editor de consultas de SQL Server Management Studio, ejecute:

USE AdventureWorks2008R2;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO