Archivos de formato para importar o exportar datos (SQL Server)Format Files for Importing or Exporting Data (SQL Server)

Al importar masivamente datos en una tabla de SQL ServerSQL Server o exportar masivamente datos de una tabla, puede usar un archivo de formato para almacenar toda la información de formato necesaria para exportar o importar datos masivamente.When you bulk import data into a SQL ServerSQL Server table or bulk export data from a table, you can use a format file to store all the format information that is required to bulk export or bulk import data. Esto incluye la información de formato para cada campo de un archivo de datos relativo a la tabla.This includes format information for each field in a data file relative to that table.

SQL Server 2016SQL Server 2016 admite dos tipos de archivos de formato: archivos de formato XML y no XML. supports two types of format files: XML formats and non-XML format files. Tanto los archivos con formato XML como los archivos no XML contienen descripciones de todos los campos de un archivo de datos, y los archivos de formato XML también contienen descripciones de las columnas de tabla correspondientes.Both non-XML format files and XML format files contain descriptions of every field in a data file, and XML format files also contain descriptions of the corresponding table columns. Por lo general, los archivos de formato XML y no XML son intercambiables.Generally, XML and non-XML format files are interchangeable. Sin embargo, es recomendable utilizar la sintaxis XML para los nuevos archivos de formato porque proporciona varias ventajas con relación a los archivos de formato no XML.However, we recommend that you use the XML syntax for new format files because they provide several advantages over non-XML format files. Para obtener más información, vea XML, archivos de formato (SQL Server).For more information, see XML Format Files (SQL Server).

Ventajas de los archivos de formato Benefits of Format Files

  • El archivo de formato proporciona una manera flexible de escribir archivos de datos que requiere poca o ninguna modificación para adaptarlos a otros formatos de datos y para leer archivos de datos de otros programas.Provides a flexible system for writing data files that requires little or no editing to comply with other data formats or to read data files from other software.

  • Permite realizar la importación masiva de datos sin tener que agregar o eliminar datos innecesarios o reordenar los datos existentes en el archivo de datos.Enables you to bulk import data without having to add or delete unnecessary data or to reorder existing data in the data file. Los archivos de formato resultan especialmente útiles cuando existe una discrepancia entre los campos del archivo de datos y las columnas de la tabla.Format files are particularly useful when a mismatch exists between fields in the data file and columns in the table.

Ejemplos de archivos de formato Examples of Format Files

Los siguientes ejemplos muestran el diseño de un archivo de formato no XML y de un archivo de formato XML.The following examples show the layout of a non-XML format file and of an XML format file. Estos archivos de formato corresponden a la tabla HumanResources.myTeam de la base de datos de ejemplo AdventureWorks2012AdventureWorks2012 .These format files correspond to the HumanResources.myTeam table in the AdventureWorks2012AdventureWorks2012 sample database. Esta tabla tiene cuatro columnas: EmployeeID, Name, Title y ModifiedDate.This table contains four columns: EmployeeID, Name, Title, and ModifiedDate.

Nota

Para obtener más información sobre la tabla y cómo crearla, vea Tabla de ejemplo HumanResources.myTeam (SQL Server).For information about this table and how to create it, see HumanResources.myTeam Sample Table (SQL Server).

A.A. Uso de un archivo de formato no XMLUsing a non-XML format file

El siguiente archivo de formato no XML usa el formato de datos nativo de SQL ServerSQL Server para la tabla HumanResources.myTeam .The following non-XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. Este formato se creó usando el siguiente comando bcp .This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T   
The contents of this format file are as follows: 9.0  
4  
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""  
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS  
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS  
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS  

Para obtener más información, vea Archivos de formato no XML (SQL Server).For more information, see Non-XML Format Files (SQL Server).

B.B. Uso de un archivo de formato XMLUsing an XML format file

El siguiente archivo de formato XML usa el formato de datos nativo de SQL ServerSQL Server para la tabla HumanResources.myTeam .The following XML format file uses the SQL ServerSQL Server native data format for the HumanResources.myTeam table. Este formato se creó usando el siguiente comando bcp .This format file was created by using the following bcp command.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T   

El archivo de formato contiene:The format file contains:

 <?xml version="1.0"?>  
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
 <RECORD>  
  <FIELD ID="1" xsi:type="NativePrefix" LENGTH="1"/>  
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="4" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
 </RECORD>  
 <ROW>  
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>  
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>  
 </ROW>  
</BCPFORMAT>  

Para obtener más información, vea XML, archivos de formato (SQL Server).For more information, see XML Format Files (SQL Server).

¿Cuándo se necesita un archivo de formato? When Is a Format File Required?

Una instrucción INSERT ... SELECT * FROM OPENROWSET(BULK...) necesita siempre un archivo de formato.An INSERT ... SELECT * FROM OPENROWSET(BULK...) statement always requires a format file.

  • Para bcp o BULK INSERT, en situaciones simples, el uso de un archivo de formato es opcional y pocas veces necesario.For bcp or BULK INSERT, in simple situations, using a format file is optional and rarely necessary. Sin embargo, en situaciones de importación masiva complejas, el archivo de formato suele ser necesario.However, for complex bulk-import situations, a format file is frequently required.

    Los archivos de formato se necesitan cuando:Format files are required if:

  • Se utiliza el mismo archivo de datos como origen de varias tablas que tienen esquemas distintos.The same data file is used as a source for multiple tables that have different schemas.

  • El archivo de datos tiene un número de campos distinto al de columnas de la tabla de destino; por ejemplo:The data file has a different number of fields that the target table has columns; for example:

    • La tabla de destino contiene como mínimo una columna para la que se ha definido un valor predeterminado o se admite un valor NULL.The target table contains at least one column for which either a default value is defined or NULL is allowed.

    • Los usuarios no tienen permisos SELECT/INSERT en una o más columnas de la tabla.The users do not have SELECT/INSERT permissions on one or more columns in the table.

    • Se utiliza un único archivo de datos con dos o más tablas que tienen esquemas distintos.A single data file is used with two or more tables that have different schemas.

  • El orden de columnas del archivo de datos y de la tabla es distinto.The column order is different for the data file and table.

  • Los caracteres de terminación o las longitudes de prefijo no coinciden entre las columnas del archivo de datos.The terminating characters or prefix lengths differ among the columns of the data file.

Nota

En caso de no disponer de ningún archivo de formato, si un comando bcp especifica un modificador de formato de datos (-n, -c, -wo -N) o una operación BULK INSERT especifica la opción DATAFILETYPE, se usará el formato de datos especificado como método predeterminado para interpretar los campos del archivo de datos.In the absence of a format file, if a bcp command specifies a data-format switch (-n, -c, -w, or -N) or a BULK INSERT operation specifies the DATAFILETYPE option, the specified data format is used as the default method of interpreting the fields of the data file.

Vea tambiénSee Also

Archivos de formato no XML (SQL Server) Non-XML Format Files (SQL Server)
XML, archivos de formato (SQL Server) XML Format Files (SQL Server)
Formatos de datos para importación en bloque o exportación masiva (SQL Server) Data Formats for Bulk Import or Bulk Export (SQL Server)