Usar el formato de caracteres Unicode para importar o exportar datos (SQL Server)

El formato de caracteres Unicode se recomienda para las transferencias masivas de datos entre varias instancias de 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 Compatibilidad con la intercalación y Unicode.

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 (SQL Server).

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 los 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

Usa 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 (SQL Server).

Ejemplos

En los siguientes ejemplos se muestra el modo de exportar masivamente datos con formato de datos 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 AdventureWorks2012, 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 AdventureWorks2012;
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') 
        ,(2,'DataField2','DataField3');
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;

Usar bcp para exportar masivamente datos con formato de datos 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.

[!NOTA]

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 (SQL Server).

-T

Especifica que la utilidad bcp se va a conectar a SQL Server mediante una conexión de confianza que usa la seguridad integrada. Si no se especifica -T, es necesario especificar -U y -P para iniciar 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 usa la coma (,) como terminador de campo. En el símbolo del sistema de Microsoft Windows, especifique:

bcp AdventureWorks2012..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 AdventureWorks2012;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar',
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO

Tareas relacionadas

Para usar formatos de datos para la importación o exportación masivas

Vea también

Referencia

bcp (utilidad)

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Tipos de datos (Transact-SQL)

Conceptos

Compatibilidad con la intercalación y Unicode