Usar el formato de caracteres para importar o exportar datos

Se recomienda utilizar el formato de caracteres al exportar datos de forma masiva a un archivo de texto que se va a utilizar en otro programa o al importar datos de forma masiva desde un archivo de texto generado por otro programa.

Nota

Para transferir datos masivamente entre instancias de Microsoft SQL Server cuando el archivo de datos contiene caracteres Unicode pero no contiene caracteres extendidos o DBCS, utilice el formato de caracteres Unicode. Para obtener más información, vea Usar el formato de caracteres Unicode para importar o exportar datos.

El formato de caracteres utiliza el formato de datos de caracteres para todas las columnas. El almacenamiento de información en el formato de caracteres resulta útil si se utilizan los datos en otro programa, como hojas de cálculo, o bien cuando es necesario copiar los datos a una instancia de SQL Server desde una base de datos de otro proveedor, como Oracle.

Consideraciones acerca del uso del formato de caracteres

Al utilizar el formato de caracteres, tenga en cuenta que:

  • De forma predeterminada, la utilidad bcp separa los campos de datos de caracteres con el carácter de tabulación y finaliza los registros con el carácter de nueva línea. Para obtener información acerca de cómo especificar terminadores alternativos, vea Especificar terminadores de campo y de fila.

  • De forma predeterminada, antes de la exportación o importación masiva de los datos en modo de caracteres, se realizan las conversiones siguientes:

    Dirección de la operación masiva

    Conversión

    Exportar

    Convierte los datos en representaciones de caracteres. Si se solicita de forma explícita, los datos se convierten a la página de códigos solicitada para las columnas de caracteres. Si no se especifica ninguna página de códigos, los datos de caracteres se convierten mediante la página de códigos OEM del equipo cliente.

    Importar

    Convierte los datos de caracteres en representaciones nativas, cuando es necesario, y traduce los datos de caracteres de la página de códigos del cliente a la página de códigos de las columnas de destino.

  • Para evitar la pérdida de caracteres extendidos durante la conversión, utilice el formato de caracteres Unicode o especifique una página de códigos. Para obtener más información acerca de cómo usar una página de códigos, vea Copiar datos entre distintas intercalaciones.

  • Cualquier dato de sql_variant almacenado en un archivo de formato de caracteres se guarda sin metadatos. Cada valor de dato se convierte al formato char según las reglas de conversión implícita de datos. Cuando los datos se importan en la columna sql_variant, se importan como char. Cuando los datos se importan en una columna con un tipo de datos diferente de sql_variant, se convierten desde char mediante una conversión implícita. Para obtener más información acerca de la conversión de datos, vea Conversiones de tipos de datos (motor de base de datos).

  • La herramienta bcp exporta valores money en archivos de datos con formato de caracteres con cuatro cifras tras el separador decimal y sin símbolos de agrupación de cifras, tales como separadores de millares. Por ejemplo, una columna money que contenga el valor 1.234.567,123456 se copiará de forma masiva en un archivo de datos como la cadena de caracteres 1234567,1235.

Opciones de comando para el formato de caracteres

Puede importar datos en formato de caracteres 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 puede usarse con las siguientes opciones de la línea de comandos:

Comando

Opción

Descripción

bcp

-c

Hace que la utilidad bcp utilice datos de caracteres.1

BULK INSERT

DATAFILETYPE ='char'

Utiliza el formato de caracteres al importar datos masivamente.

1 Para cargar datos de caracteres (-c) en un formato compatible con versiones anteriores de clientes de SQL Server, use el modificador -V. Para obtener más información, vea Importar datos con formato nativo y de caracteres de versiones anteriores de SQL Server.

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 de caracteres con bcp e importar masivamente los mismos datos mediante BULK INSERT.

Tabla de ejemplo

Los ejemplos requieren la creación de una tabla denominada myTestCharData 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 myTestCharData (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50)
   ); 

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

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

Usar bcp para exportar de forma masiva datos de caracteres

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

-c

Especifica el formato de caracteres.

-t,

Especifica una coma (,) como terminador de campo.

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

-T

Especifica que la utilidad bcp se conecte 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 desde la tabla myTestCharData en un nuevo archivo de datos denominado myTestCharData-c.Dat que utiliza la coma (,) como terminador de campo. En el símbolo del sistema de Microsoft Windows, especifique:

bcp AdventureWorks2008R2..myTestCharData out C:\myTestCharData-c.Dat -c -t, -T

Usar BULK INSERT para importar de forma masiva datos de caracteres

En el siguiente ejemplo se utiliza BULK INSERT para importar los datos del archivo de datos myTestCharData-c.Dat en la tabla myTestCharData. En el Editor de consultas de SQL Server Management Studio, ejecute:

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