Compartir a través de


Uso de archivos de formato no XML [SQL Server]

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

En SQL Server se admiten dos tipos de archivos de formato para la importación y exportación masivas: archivos de formato distinto a XML y archivos de formato XML.

Ventajas de los archivos de formato no XML

  • Puede crear automáticamente un archivo de formato no XML si especifica la opción format en un comando bcp .

  • Cuando especifica un archivo de formato existente en un comando bcp , el comando usa los valores registrados en el archivo de formato y no pregunta el tipo de almacenamiento de archivo, la longitud de prefijo, la longitud del campo o el terminador de campo.

  • Puede crear un archivo de formato para un tipo de datos determinado, como los datos de caracteres o los datos nativos.

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

Nota:

Los archivos de formato XML ofrecen varias ventajas sobre los archivos con otro formato. Para obtener más información, vea XML, archivos de formato (SQL Server).

Nota:

Esta sintaxis, incluida la inserción masiva, no se admite en Azure Synapse Analytics. En Azure Synapse Analytics y otras integraciones de plataforma de base de datos en la nube, lleve a cabo el movimiento de datos con la instrucción COPY en Azure Data Factory o usando instrucciones T-SQL, como COPY INTO y PolyBase.

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 de la utilidad bcp :

9.0 = SQL Server 2005 (9.x)

10.0 = SQL Server 2008 (10.0.x)

11.0 = SQL Server 2012 (11.x)

12.0 = SQL Server 2014 (12.x)

El número de versión solo se reconoce en bcp, no en Transact-SQL.



Nota: La versión de la utilidad bcp (Bcp.exe) que se usa para leer un archivo de formato debe ser la misma, o una versión posterior, que la que se usó para crear el archivo de formato. Por ejemplo, bcp de SQL Server 2012 (11.x) puede leer un archivo de formato de la versión 10.0 generado por bcp de SQL Server 2008 (10.0.x), pero bcp de SQL Server 2008 (10.0.x) no puede leer un archivo de formato de la versión 12.0 generado por bcp de SQL Server 2014 (12.x).
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 (SQL Server).
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 la longitud de prefijo en los archivos de datos mediante bcp (SQL Server).
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 (SQL Server).
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 (SQL Server).
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 caracteres y Unicode en el archivo de datos.

Nota:

Puede modificar un archivo de formato de forma que le permita realizar una importación 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, consulte la lista Tareas relacionadas.

Ejemplo de archivo de formato no XML

En el ejemplo siguiente 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 AdventureWorks2022 .

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

12.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 en la que se muestran 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.

Tareas relacionadas

Pasos siguientes