Archivos de formato XML de ejemplo

Actualizado: 17 de julio de 2006

Los ejemplos de este tema muestran los aspectos clave del uso de archivos de formato XML. La sintaxis de un archivo de formato es independiente de la dirección de la operación; es decir, la sintaxis es la misma para exportaciones e importaciones masivas.

Los ejemplos muestran lo siguiente:

  • Ordenar campos de datos de caracteres igual que columnas de tabla
  • Ordenar campos de datos y columnas de tabla de forma diferente
  • Omitir un campo de datos
  • Asignar tipos diferentes de campos a columnas
  • Asignar datos XML a una tabla
  • Importar campos de longitud fija o de ancho fijo

[!NOTA] Para obtener información acerca de cómo crear archivos de formato, vea Crear un archivo de formato.

Ejemplos

En los archivos de datos que se muestran en los ejemplos siguientes, <tab> indica un carácter de tabulación en un archivo de datos, y <return> indica un retorno de carro.

A: Ordenar campos de datos de caracteres igual que columnas de tabla

El ejemplo siguiente muestra un archivo de formato XML que describe un archivo de datos que contiene tres campos de datos de caracteres. El archivo de formato asigna el archivo de datos a una tabla que contiene tres columnas. Los campos de datos se corresponden uno a uno con las columnas de la tabla.

Tabla (fila): Person (Age int, FirstName varchar(20), LastName varchar(30))

Archivo de datos (registro): Age<tab>Firstname<tab>Lastname<return>

El siguiente archivo de formato XML lee del archivo de datos a la tabla.

En el elemento <RECORD>, el archivo de formato representa los valores de datos de los tres campos como datos de caracteres. Para cada campo, el atributo TERMINATOR indica el terminador que sigue al valor de datos.

Los campos de datos se corresponden uno a uno con las columnas de la tabla. En el elemento <ROW>, el archivo de formato asigna la columna Age al primer campo, la columna FirstName al segundo campo y la columna LastName al tercer campo.

<?xml version="1.0"?>
<BCPFORMAT 
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="2" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="3" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!NOTA] Para ver un ejemplo equivalente en AdventureWorks, vea Crear un archivo de formato.

B: Ordenar campos de datos y columnas de tabla de forma diferente

El ejemplo siguiente muestra un archivo de formato XML que describe un archivo de datos que contiene tres campos de datos de caracteres. El archivo de formato asigna el archivo de datos a una tabla que contiene tres columnas que están ordenadas de forma diferente a los campos del archivo de datos.

Tabla (fila): Person (Age int, FirstName varchar(20), LastName varchar(30))

Archivo de datos (registro): Age<tab>Lastname<tab>Firstname<return>

En el elemento <RECORD>, el archivo de formato representa los valores de datos de los tres campos como datos de caracteres.

En el elemento <ROW>, el archivo de formato asigna la columna Age al primer campo, la columna FirstName al tercer campo y la columna LastName al segundo campo.

Las características distintivas de este ejemplo se indican en negrita.

<?xml version="1.0"?>
<BCPFORMAT 
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="20" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!NOTA] Para ver un ejemplo equivalente en AdventureWorks, vea Usar un archivo de formato para asignar columnas de tabla a campos de un archivo de datos.

C: Omitir un campo de datos

El ejemplo siguiente muestra un archivo de formato XML que describe un archivo de datos que contiene cuatro campos de datos de caracteres. El archivo de formato asigna el archivo de datos a una tabla que contiene tres columnas. El segundo campo de datos no se corresponde con ninguna columna de la tabla.

Tabla (fila): Person (Age int, FirstName Varchar(20), LastName Varchar(30))

Archivo de datos (registro): Age<tab>employeeID<tab>Firstname<tab>Lastname<return>

En el elemento <RECORD>, el archivo de formato representa los valores de datos de los cuatro campos como datos de caracteres. Para cada campo, el atributo TERMINATOR indica el terminador que sigue al valor de datos.

En el elemento <ROW>, el archivo de formato asigna la columna Age al primer campo, la columna FirstName al tercer campo y la columna LastName al cuarto campo.

Las características distintivas de este ejemplo se indican en negrita.

<?xml version="1.0"?> 
<BCPFORMAT 
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="12"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="10" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" 
      MAX_LENGTH="20" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" 
      MAX_LENGTH="30" 
      COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="age" xsi:type="SQLINT"/>
    <COLUMN SOURCE="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>
    <COLUMN SOURCE="4" NAME="lastname" xsi:type="SQLVARYCHAR"/>
  </ROW>
</BCPFORMAT>

[!NOTA] Para ver un ejemplo equivalente en AdventureWorks, vea Usar un archivo de formato para omitir un campo de datos.

D: Asignar <FIELD> xsi:type a <COLUMN> xsi:type

El ejemplo siguiente muestra tipos de campo diferentes y sus asignaciones a columnas.

<?xml version = "1.0"?>
<BCPFORMAT
xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <RECORD>
      <FIELD xsi:type="CharTerm" ID="C1" TERMINATOR="\t" 
            MAX_LENGTH="4"/>
      <FIELD xsi:type="CharFixed" ID="C2" LENGTH="10" 
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="CharPrefix" ID="C3" PREFIX_LENGTH="2" 
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NCharTerm" ID="C4" TERMINATOR="\t" 
         MAX_LENGTH="4"/>
      <FIELD xsi:type="NCharFixed" ID="C5" LENGTH="10" 
         COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NCharPrefix" ID="C6" PREFIX_LENGTH="2" 
         MAX_LENGTH="32" COLLATION="SQL_LATIN1_GENERAL_CP1_CI_AS"/>
      <FIELD xsi:type="NativeFixed" ID="C7" LENGTH="4"/>
   </RECORD>
   <ROW>
      <COLUMN SOURCE="C1" NAME="Age" xsi:type="SQLTINYINT"/>
      <COLUMN SOURCE="C2" NAME="FirstName" xsi:type="SQLVARYCHAR" 
      LENGTH="16" NULLABLE="NO"/>
      <COLUMN SOURCE="C3" NAME="LastName" />
      <COLUMN SOURCE="C4" NAME="Salary" xsi:type="SQLMONEY"/>
      <COLUMN SOURCE="C5" NAME="Picture" xsi:type="SQLIMAGE"/>
      <COLUMN SOURCE="C6" NAME="Bio" xsi:type="SQLTEXT"/>
      <COLUMN SOURCE="C7" NAME="Interest"xsi:type="SQLDECIMAL" 
      PRECISION="5" SCALE="3"/>
   </ROW>
</BCPFORMAT>

E: Asignar datos XML a una tabla

El ejemplo siguiente crea una tabla de dos columnas vacía (t_xml), en la que la primera columna se asigna al tipo de datos int y la segunda columna se asigna al tipo de datos xml.

CREATE TABLE t_xml (c1 int, c2 xml)

El siguiente archivo de formato XML carga un archivo de datos en una tabla t_xml.

<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="NativePrefix" PREFIX_LENGTH="1"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="8"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="c1" xsi:type="SQLINT"/>
  <COLUMN SOURCE="2" NAME="c2" xsi:type="SQLNCHAR"/>
 </ROW>
</BCPFORMAT>

F: Importar campos de longitud fija o de ancho fijo

El siguiente ejemplo describe campos fijos de 10 o 6 caracteres cada uno. El archivo de formato representa estas longitudes y anchos de campo como LENGTH="10" y LENGTH="6", respectivamente. Cada fila de los archivos de datos termina con una combinación de retorno de carro y avance de línea, {CR}{LF}, que el archivo de formato representa como TERMINATOR="\r\n".

<?xml version="1.0"?>
<BCPFORMAT
       xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharFixed" LENGTH="10"/>
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="6"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n"
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="C1" xsi:type="SQLINT" />
    <COLUMN SOURCE="2" NAME="C2" xsi:type="SQLINT" />
  </ROW>
</BCPFORMAT>

Otros ejemplos

Para obtener más ejemplos tanto de archivos de formato XML como de formato no XML, vea los siguientes temas:

Vea también

Conceptos

Descripción de los archivos de formato XML
Descripción de los archivos de formato no XML
Sintaxis de esquema para archivos de formato XML
Trabajar con archivos de formato

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

17 de julio de 2006

Contenido nuevo:
  • Se agregó el ejemplo "F: Importar campos de longitud fija o de ancho fijo".

14 de abril de 2006

Contenido nuevo:
  • Se han agregado vínculos a otros temas que contienen ejemplos de archivos con formato XML que asignan campos a columnas durante una importación masiva.