Descripción de los archivos de formato no XML

En SQL Server 2000 y versiones anteriores, la importación y exportación masivas funcionan con un solo tipo de archivo de formato. Esto se admite todavía en SQL Server 2005 y versiones posteriores, que también admiten archivos de formato XML como alternativa. Para distinguirlos de los archivos de formato del tipo original, se llaman archivos de formato no XML.

Nota

Los archivos de formato XML ofrecen varias ventajas. Para obtener más información, vea Archivos de formato para importar o exportar datos.

Normalmente, los archivos de formato se crean para un formato de datos determinado mediante el comando bcp de una de las formas siguientes:

  • Puede crear dos tipos de archivo de formato, datos de caracteres o datos nativos, especificando la opción format en el comando bcp. Para obtener más información, vea Crear un archivo de formato.

  • Puede crear un archivo de formato no XML que contenga atributos especificados de modo interactivo para cada campo de datos. Para obtener más información, vea Especificar formatos de datos por razones de compatibilidad mediante bcp.

    Nota

    Cuando se especifica un archivo de formato existente en un comando bcp, el comando utiliza los valores registrados en el archivo de formato y no pregunta el tipo de almacenamiento de archivo, la longitud de prefijo, la longitud de campo ni el terminador de campo.

Estructura de los archivos de formato no XML

Un archivo de formato no XML es un archivo de texto que tiene una estructura específica. El archivo de formato no XML contiene información sobre el tipo de almacenamiento de archivo, la longitud de prefijo, la longitud de campo y el terminador de campo de cada columna de tabla.

En la ilustración siguiente se muestran los campos de archivo de formato de un archivo de formato no XML de ejemplo.

Identifica los campos de un archivo de formato no XML

Los campos Versión y Número de columnas solo aparecen una vez. Los significados se describen en la siguiente tabla.

Campo del archivo de formato

Descripción

Versión

Número de versión del archivo de formato. Para la mayoría de las versiones de SQL Server, la versión del archivo de formato es igual que la de la utilidad bcp (Bcp.exe), como sigue:

Versión de SQL ServerVersión del archivo de formatoVersión de bcp1
SQL Server versión 7.07.07.0
SQL Server 2000 8.08.0
SQL Server 2005 9.09.0
SQL Server 2008 10.010.0
SQL Server 2008 R2 10.010.50

1 El número de versión únicamente lo reconoce bcp, no Transact-SQL.

NotaNota
La versión de la utilidad bcp utilizada para leer un archivo de formato debe ser la misma versión, o una versión posterior, que la del archivo de formato. Por ejemplo, SQL Server 2008bcp puede leer un formato de archivo de la versión 9.0, generado por SQL Server 2005bcp, pero SQL Server 2005bcp no puede leer un formato de archivo de la versión 10.0, generado por SQL Server 2008 o SQL Server 2008 R2bcp.

Número de columnas

Número de campos del archivo de datos. Este número debe ser el mismo en todas las filas.

Los otros campos del archivo de formato describen los campos de datos que se importarán o exportarán masivamente. Cada campo de datos requiere una fila distinta en el archivo de formato. Cada fila del archivo de formato contiene los valores de los campos del archivo de formato que se describen en la siguiente tabla.

Campo del archivo de formato

Descripción

Orden de campo del archivo host

Número que indica la posición de cada campo en el archivo de datos. El primer campo de la fila es 1 y así sucesivamente.

Tipo de datos del archivo host

Indica el tipo de datos que se almacena en un campo determinado del archivo de datos. Para archivos de datos ASCII, utilice SQLCHAR; para archivos de datos con formato nativo, utilice tipos de datos predeterminados. Para obtener más información, vea Especificar el tipo de almacenamiento en archivo mediante bcp.

Longitud del prefijo

Número de caracteres del prefijo para el campo. Los valores de longitud de prefijo válidos son 0, 1, 2, 4 y 8. Para evitar especificar el prefijo de longitud, establezca esta opción en 0. Se debe especificar el prefijo de longitud si el campo contiene valores de datos NULL. Para obtener más información, vea Especificar longitud de prefijo en archivos de datos.

Longitud de datos del archivo host

Longitud máxima, en bytes, del tipo de datos almacenados en el campo concreto del archivo de datos.

Si está creando un archivo de formato no XML para un archivo de texto delimitado, puede especificar 0 para la longitud de datos del archivo host de cada campo de datos. Cuando se importa un archivo de texto delimitado con una longitud de prefijo de 0 y un terminador, el valor de la longitud de campo se ignora porque el espacio de almacenamiento utilizado por las columnas es igual a la longitud de los datos más el terminador.

Para obtener más información, vea Especificar la longitud de campo mediante bcp.

Terminador

Delimitador para separar los campos del archivo de datos. Los terminadores más utilizados son la coma (,), la tabulación (\t) y el final de línea (\r\n). Para obtener más información, vea Especificar terminadores de campo y de fila.

Orden de columnas del servidor

Orden en el que aparecen las columnas en la tabla de SQL Server. Por ejemplo, si el cuarto campo del archivo de datos se asigna a la sexta columna de una tabla de SQL Server, el orden de las columnas del servidor para el cuarto campo es 6.

Para evitar que una columna de la tabla reciba datos del archivo de datos, establezca el valor 0 para el orden de las columnas del servidor.

Nombre de la columna del servidor

Nombre de la columna copiada de la tabla de SQL Server. El nombre real del campo no es necesario, pero el campo en el archivo de formato no debe estar en blanco.

Intercalación de columnas

La intercalación que se utiliza para almacenar datos de carácter y Unicode en el archivo de datos.

Nota

Puede modificar un archivo de formato de forma que le permita importar de forma masiva desde un archivo de datos en el que el número o el orden de los campos difieran del número o el orden de las columnas de la tabla. Para obtener más información, vea Usar un archivo de formato para asignar campos a columnas durante la importación masiva.

Ejemplos

En el siguiente ejemplo se muestra un archivo de formato no XML creado anteriormente (myDepartmentIdentical-f-c.fmt). Este archivo describe un campo de datos de caracteres para cada columna en la tabla HumanResources.Department de la base de datos de ejemplo AdventureWorks2008R2.

El archivo de formato generado, myDepartmentIdentical-f-c.fmt, contiene la siguiente información:

10.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID     ""
2       SQLCHAR       0       100     "\t"     2     Name             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName        SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate     ""

Nota

Para ver una ilustración que muestra los campos del archivo de formato en relación con este archivo de formato no XML de ejemplo, vea "Estructura de los archivos de formato no XML" anteriormente en este tema.