Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SQL Server 2014 proporciona un esquema XML que define la sintaxis para escribir archivos de formato XML que se usarán para importar datos de forma masiva en una tabla de SQL Server. Los archivos de formato XML deben cumplir este esquema, que se define en el lenguaje de definición de esquema XML (XSDL). Los archivos con formato XML solamente se admiten cuando se instalan herramientas de SQL Server con SQL Server Native Client.
Puede usar un archivo de formato XML con un comando bcp, una instrucción BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...). El comando bcp permite generar automáticamente un archivo de formato XML para una tabla; para obtener más información, vea bcp Utility.
Nota:
Se admiten dos tipos de archivos de formato para exportar e importar de forma masiva: archivos de formato no XML y archivos de formato XML. Los archivos de formato XML proporcionan una alternativa flexible y eficaz a los archivos de formato no XML. Para obtener información sobre los archivos de formato no XML, vea Archivos de formato no XML (SQL Server).
Ventajas de los archivos de formato XML
Los archivos de formato XML se describen automáticamente, lo que facilita la lectura, la creación y la ampliación. Son legibles para personas, lo que facilita la comprensión de cómo se interpretan los datos durante las operaciones masivas.
Los archivos de formato XML contienen los tipos de datos de las columnas de destino. La codificación XML describe claramente los tipos de datos y los elementos de datos del archivo de datos y también la asignación entre elementos de datos y columnas de tabla.
Esto permite la separación entre cómo se representan los datos en el archivo de datos y qué tipo de datos está asociado a cada campo del archivo. Por ejemplo, si un archivo de datos contiene una representación de caracteres de los datos, se pierde el tipo de columna SQL correspondiente.
Un archivo de formato XML permite cargar un campo que contiene un único tipo de datos de objeto grande (LOB) desde un archivo de datos.
Un archivo de formato XML se puede mejorar pero sigue siendo compatible con sus versiones anteriores. Además, la claridad de la codificación XML facilita la creación de varios archivos de formato para un archivo de datos determinado. Esto resulta útil si tiene que asignar todos o algunos de los campos de datos a columnas de diferentes tablas o vistas.
La sintaxis XML es independiente de la dirección de la operación; es decir, la sintaxis es la misma para la exportación masiva y la importación masiva.
Puede usar archivos de formato XML para importar datos de forma masiva en tablas o vistas sin particiones y exportar datos de forma masiva.
En la función OPENROWSET(BULK...), especificar una tabla de destino es opcional. Esto se debe a que la función se basa en el archivo de formato XML para leer datos de un archivo de datos.
Nota:
Se necesita una tabla de destino con el comando bcp y la instrucción BULK INSERT, que usa las columnas de la tabla de destino para realizar la conversión de tipos.
Estructura de archivos de formato XML
Al igual que un archivo de formato no XML, un archivo de formato XML define el formato y la estructura de los campos de datos de un archivo de datos y asigna esos campos de datos a columnas de una sola tabla de destino.
Un archivo de formato XML posee dos componentes principales, <RECORD> y <ROW>:
<RECORD> describe los datos tal como se almacenan en el archivo de datos.
Cada elemento <RECORD> contiene un conjunto de uno o varios elementos <FIELD>. Estos elementos corresponden a campos del archivo de datos. La sintaxis básica es la siguiente:
<REGISTRO>
<FIELD .../> [ ... n ]
</GRABAR>
Cada <elemento FIELD> describe el contenido de un campo de datos específico. Un campo solo se puede asignar a una columna de la tabla. No todos los campos deben asignarse a columnas.
Un campo de un archivo de datos puede ser de longitud fija o variable o de carácter terminado. Un valor de campo se puede representar como: un carácter (mediante una representación de un solo byte), un carácter ancho (mediante la representación de dos bytes Unicode), el formato de base de datos nativo o un nombre de archivo. Si un valor de campo se representa como un nombre de archivo, el nombre de archivo apunta al archivo que contiene el valor de una columna BLOB en la tabla de destino.
<ROW> describe cómo construir filas de datos a partir de un archivo de datos cuando los datos del archivo se importan en una tabla de SQL Server.
Un <elemento ROW> contiene un conjunto de <elementos COLUMN> . Estos elementos corresponden a columnas de tabla. La sintaxis básica es la siguiente:
<FILA>
<COLUMN .../> [ ... n ]
</FILA>
Cada <elemento COLUMN> se puede asignar solo a un campo del archivo de datos. El orden de los <elementos COLUMN> dentro del <elemento ROW> define el orden en el que son devueltos por la operación masiva. El archivo de formato XML asigna a cada <elemento COLUMN> un nombre local que no tiene ninguna relación con la columna de la tabla de destino de una operación de importación masiva.
Sintaxis de esquema para archivos de formato XML
Esta sección contiene un resumen de los elementos y atributos del esquema XML para los 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 la exportación masiva y la importación masiva. En esta sección también se considera cómo la importación masiva usa los <elementos ROW> y <COLUMN> y cómo colocar el valor xsi:type de un elemento en un conjunto de datos.
Para ver cómo la sintaxis corresponde a los archivos de formato XML reales, vea Archivos de formato XML de ejemplo, más adelante en este tema.
Nota:
Puede modificar un archivo de formato para permitir la importación masiva desde un archivo de datos en el que el número o el orden de los campos difieren del número o el orden de las columnas de tabla. Para obtener más información, vea Format Files for Import or Exporting Data (SQL Server) (Formato de archivos para importar o exportar datos [SQL Server]).
Sintaxis básica del esquema XML
Estas instrucciones de sintaxis solo muestran los elementos (<BCPFORMAT>, RECORD>, <<FIELD>, <ROW> y <COLUMN>) y sus atributos básicos.
<BCPFORMAT ...>
<GRABAR>
<FIELD ID = "fieldID" xsi:type = "fieldType" [...]
/>
</GRABAR>
<FILA>
<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [...]
/>
</FILA>
</BCPFORMAT>
Nota:
Los atributos adicionales asociados al valor del xsi:type en un <elemento FIELD> o <COLUMN> se describen más adelante en este tema.
Elementos de esquema
En esta sección se resume el propósito de cada elemento que define el esquema XML para los archivos de formato XML. Los atributos se describen en secciones independientes más adelante en este tema.
<BCPFORMAT>
Es el elemento format-file que define la estructura de registro de un archivo de datos determinado y su correspondencia con las columnas de una fila en la tabla.
<GRABAR.../>
Define un elemento complejo que contiene uno o varios <elementos FIELD> . El orden en el que los campos se declaran en el archivo de formato es el orden en el que esos campos aparecen en el archivo de datos.
<CAMPO.../>
Define un campo en el archivo de datos, que contiene datos.
Los atributos de este elemento se describen en Atributos del <elemento FIELD>, más adelante en este tema.
<FILA.../>
Define un elemento complejo que contiene uno o varios <elementos COLUMN> . El orden de los <elementos COLUMN> es independiente del orden de <los elementos FIELD> en una definición RECORD. En su lugar, el orden de los <elementos COLUMN> en un archivo de formato determina el orden de columna del conjunto de filas resultante. Los campos de datos se cargan en el orden en que se declaran los elementos COLUMN correspondientes <en el <elemento COLUMN>.>
Para obtener más información, vea How Bulk Import Uses the <ROW> Element , más adelante en este tema.
<COLUMNA>
Define una columna como un elemento (<COLUMN>). Cada <elemento COLUMN> corresponde a un <elemento FIELD> (cuyo identificador se especifica en el atributo SOURCE del <elemento COLUMN> ).
Los atributos de este elemento se describen en Atributos del <elemento COLUMN>, más adelante en este tema. Vea también cómo la importación masiva usa el <elemento COLUMN>, más adelante en este tema.
</BCPFORMAT>
Necesario para finalizar el archivo de formato.
Atributos del <elemento FIELD>
En esta sección se describen los atributos del <elemento FIELD> , que se resumen en la siguiente sintaxis de esquema:
<CAMPO
ID ="fieldID"
xsi**:**type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Cada <elemento FIELD> es independiente de los demás. Un campo se describe en términos de los atributos siguientes:
| Atributo FIELD | Descripción | Opcional/ Obligatorio |
|---|---|---|
ID ="fieldID" |
Especifica el nombre lógico del campo en el archivo de datos. El identificador de un campo es la clave que se usa para hacer referencia al campo. <FIELD ID**="" fieldID/> se asigna a <COLUMN SOURCE=""fieldID**/> |
Obligatorio |
xsi:type ="fieldType" |
Se trata de una construcción XML (usada como un atributo) que identifica el tipo de la instancia del elemento. El valor de fieldType determina cuál de los atributos opcionales (a continuación) necesita en una instancia determinada. | Obligatorio (según el tipo de datos) |
LENGTH ="n" |
Este atributo define la longitud de una instancia de un tipo de datos de longitud fija. El valor de n debe ser un entero positivo. |
Opcional, a menos que el valor xsi:type lo requiera. |
PREFIX_LENGTH ="p" |
Este atributo define la longitud del prefijo para una representación de datos binaria. El valor PREFIX_LENGTH, p, debe ser uno de los siguientes: 1, 2, 4 o 8. | Opcional a menos que sea necesario por el valor xsi:type |
MAX_LENGTH ="m" |
Este atributo es el número máximo de bytes que se pueden almacenar en un campo determinado. Sin una tabla de destino, no se conoce la longitud máxima de la columna. El atributo MAX_LENGTH restringe la longitud máxima de una columna de caracteres de salida, lo que limita el almacenamiento asignado para el valor de columna. Esto resulta especialmente conveniente cuando se usa la opción BULK de la función OPENROWSET en una cláusula SELECT FROM. El valor de m debe ser un entero positivo. De forma predeterminada, la longitud máxima es de 8000 caracteres para una columna char y 4000 caracteres para una columna nchar . |
Opcional |
COLLATION ="collationName" |
La INTERCALACIÓN solo se permite para los campos de caracteres. Para obtener una lista de los nombres de intercalación de SQL, vea Nombre de intercalación de SQL Server (Transact-SQL). | Opcional |
TERMINATOR = "terminator" |
Este atributo especifica el terminador de un campo de datos. El terminador puede ser cualquier carácter. El terminador debe ser un carácter único que no forme parte de los datos. De forma predeterminada, el terminador de campo es el carácter de tabulación (representado como \t). Para representar una marca de párrafo, use \r\n. |
Se usa solo con un tipo xsi:type de datos de caracteres, que requiere este atributo. |
Valores Xsi:type del <elemento FIELD>
El valor xsi:type es una construcción XML (usada como un atributo) que identifica el tipo de datos de una instancia de un elemento. Para obtener información sobre cómo usar "Colocar el valor xsi:type en un conjunto de datos", consulte más adelante en esta sección.
El valor xsi:type del <elemento FIELD> admite los siguientes tipos de datos.
| <FIELD> valores de xsi:type | Atributos XML necesarios para tipo de datos |
Atributos XML opcionales para tipo de datos |
|---|---|---|
| NativeFixed | LENGTH |
Ninguno. |
| NativePrefix | PREFIX_LENGTH |
LONGITUD_MÁXIMA |
| CharFixed | LENGTH |
COLACIÓN |
| NCharFixed | LENGTH |
COLACIÓN |
| CharPrefix | PREFIX_LENGTH |
MAX_LENGTH, COLACIÓN |
| NCharPrefix | PREFIX_LENGTH |
MAX_LENGTH, COLACIÓN |
| CharTerm | TERMINATOR |
MAX_LENGTH, COLACIÓN |
| NCharTerm | TERMINATOR |
MAX_LENGTH, ORDENACIÓN |
Para obtener más información sobre los tipos de datos de Microsoft SQL Server, vea Tipos de datos (Transact-SQL).
Atributos del <elemento COLUMN>
En esta sección se describen los atributos del <elemento COLUMN> , que se resumen en la sintaxis de esquema siguiente:
<COLUMNA
SOURCE = "fieldID"
NAME = "columnName"
xsi:type = "columnType"
[ LENGTH = "n" ]
[ PRECISION = "n" ]
[ SCALE = "value" ]
[ NULLABLE = { "SÍ"
"NO" } ]
/>
Un campo se asigna a una columna de la tabla de destino mediante los atributos siguientes:
| Atributo COLUMNA | Descripción | Opcional/ Obligatorio |
|---|---|---|
SOURCE ="fieldID" |
Especifica el identificador del campo que se asigna a la columna. <COLUMN SOURCE**=" fieldID"/> se asigna a <FIELD ID=""fieldID**/> |
Obligatorio |
| NAME = "columnName" | Especifica el nombre de la columna del conjunto de filas representado por el archivo de formato. Este nombre de columna se usa para identificar la columna en el conjunto de resultados y no necesita corresponder al nombre de columna usado en la tabla de destino. | Obligatorio |
xsi**:**type ="ColumnType" |
Se trata de una construcción XML (usada como un atributo) que identifica el tipo de datos de la instancia del elemento. El valor de ColumnType determina cuál de los atributos opcionales (a continuación) necesita en una instancia determinada. Nota: Los posibles valores de ColumnType y sus atributos asociados se enumeran en la tabla siguiente. |
Opcional |
LONGITUD ="n" |
Define la longitud de una instancia de un tipo de datos de longitud fija. LENGTH solo se usa cuando xsi:type es un tipo de datos de cadena. El valor de n debe ser un entero positivo. |
Opcional (disponible solo si xsi:type es un tipo de datos de cadena) |
PRECISION ="n" |
Indica el número de dígitos de un número. Por ejemplo, el número 123.45 tiene una precisión de 5. El valor debe ser un entero positivo. |
Opcional (disponible solo si xsi:type es un tipo de datos de número variable) |
SCALE ="int" |
Indica el número de dígitos a la derecha del separador decimal en un número. Por ejemplo, el número 123.45 tiene una escala de 2. El valor debe ser un entero. |
Opcional (disponible solo si xsi:type es un tipo de datos de número variable) |
| NULLABLE = { "YES" "NO" } |
Indica si una columna puede asumir valores NULL. Este atributo es completamente independiente de FIELDS. Sin embargo, si una columna no es NULLABLE y el campo especifica NULL (sin especificar ningún valor), se produce un error en tiempo de ejecución. El atributo NULLABLE solo se usa si realiza una instrucción SELECT FROM OPENROWSET(BULK...). |
Opcional (disponible para cualquier tipo de datos) |
Valores Xsi:type del <elemento COLUMN>
El valor xsi:type es una construcción XML (usada como un atributo) que identifica el tipo de datos de una instancia de un elemento. Para obtener información sobre cómo usar "Insertar el valor xsi:type en un conjunto de datos", consulta la parte posterior de esta sección.
El <elemento COLUMN> admite tipos de datos SQL nativos, como se indica a continuación:
| Categoría de tipo | <Tipos de datos COLUMN> | Atributos XML necesarios para tipo de datos |
Atributos XML opcionales para tipo de datos |
|---|---|---|---|
| Fijo |
SQLBIT, SQLTINYINT, SQLSMALLINT, SQLINT, SQLBIGINT, SQLFLT4, SQLFLT8, SQLDATETIME, SQLDATETIM4, SQLDATETIM8, SQLMONEY, SQLMONEY4, SQLVARIANT, y SQLUNIQUEID |
Ninguno. | NULLABLE |
| Número de variable |
SQLDECIMAL y SQLNUMERIC |
Ninguno. | ADMITIR NULOS, PRECISIÓN, ESCALA |
| LOB (Línea de Negocio) |
SQLIMAGE, CharLOB, SQLTEXTy SQLUDT |
Ninguno. | Puede ser nulo |
| LOB de caracteres | SQLNTEXT |
Ninguno. | Admitir valores nulos |
| Cadena binaria |
SQLBINARY y SQLVARYBIN |
Ninguno. | ANULABLE, LONGITUD |
| Cadena de caracteres |
SQLCHAR, SQLVARYCHAR, SQLNCHARy SQLNVARCHAR |
Ninguno. | ANULABLE, LONGITUD |
Importante
Para importar o exportar datos SQLXML de manera masiva, use uno de los siguientes tipos de datos en el archivo de formato: SQLCHAR o SQLVARYCHAR (los datos se envían en la página de códigos del cliente o en la página de códigos implícita en la intercalación), SQLNCHAR o SQLNVARCHAR (los datos se envían como Unicode), o SQLBINARY o SQLVARYBIN (los datos se envían sin ninguna conversión).
Para obtener información sobre los tipos de datos de SQL Server, consulte Tipos de datos (Transact-SQL).
La importación masiva usa el <elemento ROW>
El <elemento ROW> se omite en algunos contextos. Si el <elemento ROW> afecta a una operación de importación masiva depende de cómo se realice la operación:
el comando bcp
Cuando los datos se cargan en una tabla de destino, bcp omite el <componente ROW> . En su lugar, bcp carga los datos en función de los tipos de columna de la tabla de destino.
instrucciones Transact-SQL (BULK INSERT y proveedor de conjuntos de filas BULK de OPENROWSET)
Al importar datos de forma masiva en una tabla, las instrucciones Transact-SQL usan el <componente ROW> para generar el conjunto de filas de entrada. Además, las instrucciones de Transact-SQL realizan las conversiones adecuadas de tipos basándose en los tipos de columna especificados en <ROW> y la columna correspondiente en la tabla de destino. Si existe un error de coincidencia entre los tipos de columna, tal como se especifica en el archivo de formato y en la tabla de destino, se produce una conversión de tipo adicional. Esta conversión de tipos adicional puede provocar cierta discrepancia (es decir, una pérdida de precisión) en el comportamiento en BULK INSERT o en el proveedor Bulk de conjuntos de filas de OPENROWSET en comparación con bcp.
La información del <elemento ROW> permite construir una fila sin necesidad de información adicional. Por este motivo, puede generar un conjunto de filas mediante una instrucción SELECT (SELECT * FROM OPENROWSET(BULK datafile FORMATFILE=xmlformatfile).
Nota:
La cláusula BULK OPENROWSET requiere un archivo de formato (tenga en cuenta que la conversión del tipo de datos del campo al tipo de datos de una columna solo está disponible con un archivo de formato XML).
Cómo el elemento <COLUMNA> es utilizado por la importación masiva
Para importar datos de forma masiva en una tabla, los <elementos COLUMN> de un archivo de formato asignan un campo de archivo de datos a columnas de tabla especificando:
Posición de cada campo dentro de una fila del archivo de datos.
Tipo de columna, que se usa para convertir el tipo de datos de campo al tipo de datos de columna deseado.
Si no hay ninguna columna asignada a un campo, el campo no se copia en las filas generadas. Este comportamiento permite que un archivo de datos genere filas con columnas diferentes (en tablas diferentes).
Del mismo modo, para exportar datos de forma masiva desde una tabla, cada <COLUMN> del archivo de formato asigna la columna de la fila de la tabla de entrada a su campo correspondiente en el archivo de datos de salida.
Colocar el valor xsi:type en un conjunto de datos
Cuando se valida un documento XML mediante el lenguaje de definición de esquema XML (XSD), el valor xsi:type no se coloca en el conjunto de datos. Sin embargo, puede colocar la información xsi:type en el conjunto de datos cargando el archivo de formato XML en un documento XML (por ejemplo, myDoc), como se muestra en el siguiente fragmento de código:
...;
myDoc.LoadXml(xmlFormat);
XmlNodeList ColumnList = myDoc.GetElementsByTagName("COLUMN");
for(int i=0;i<ColumnList.Count;i++)
{
Console.Write("COLUMN: xsi:type=" +ColumnList[i].Attributes["type",
"http://www.w3.org/2001/XMLSchema-instance"].Value+"\n");
}
Archivos de formato XML de ejemplo
Esta sección contiene información sobre el uso de archivos de formato XML en una variedad de casos, incluido un ejemplo de Adventure Works.
Nota:
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 e <return> indica un retorno de carro.
Nota:
Para obtener información sobre cómo crear archivos de formato, vea Crear un archivo de formato (SQL Server).
A. Ordenar campos de datos de caracteres igual que las columnas de tabla
En el ejemplo siguiente se 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 corresponden uno a uno con las columnas de la tabla.
Tabla (fila): Persona (Age int, FirstName varchar(20), LastName varchar(30))
Archivo de datos (registro): Pestaña>Age<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 en los tres campos como datos de caracteres. Para cada campo, el TERMINATOR atributo indica el terminador que sigue al valor de datos.
Los campos de datos corresponden uno a uno con las columnas de la tabla. En el <ROW> elemento , 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 obtener un ejemplo equivalente de AdventureWorks2012, vea Crear un archivo de formato (SQL Server).
B. Ordenar campos de datos y columnas de tabla de forma diferente
En el ejemplo siguiente se 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 ordenadas de forma diferente a los campos del archivo de datos.
Tabla (fila): Persona (Edad int, Nombre varchar(20), Apellido varchar(30))
Archivo de datos (registro): pestaña>Apellidos<pestaña Apellido<devolución>Nombre<>
En el <RECORD> elemento, el archivo de formato representa los valores de datos de los tres campos como datos de caracteres.
En el <ROW> elemento , el archivo de formato asigna la columna Age al primer campo, la columna FirstName al tercer campo y la columna LastName al segundo 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="3" NAME="firstname" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="2" NAME="lastname" xsi:type="SQLVARYCHAR"/>
</ROW>
</BCPFORMAT>
Nota:
Para obtener un ejemplo equivalente de AdventureWorks2012, vea Usar un archivo de formato para asignar columnas de tabla a Data-File Campos (SQL Server).
C. Omitir un campo de datos
En el ejemplo siguiente se 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 corresponde a ninguna columna de tabla.
Tabla (fila): Persona (Edad int, Nombre Varchar(20), Apellido Varchar(30))
Archivo de datos (registro):>Pestaña de edad<employeeID<pestaña>Nombrenombre<de la pestaña>Último<valor devuelto>
En el elemento , el <RECORD> 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 <ROW> elemento , el archivo de formato asigna la columna Age al primer campo, la columna FirstName al tercer campo y la columna LastName al cuarto campo.
<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 obtener un ejemplo equivalente de AdventureWorks2012, vea Usar un archivo de formato para omitir un campo de datos (SQL Server).
D. Asignación de <FIELD> xsi:type al <COLUMN> xsi:type
En el ejemplo siguiente se muestran diferentes tipos de campos 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. Asignación de datos XML a una tabla
En el ejemplo siguiente se crea una tabla vacía de dos columnas (t_xml), en la que la primera columna se asigna al int tipo de datos y la segunda columna se asigna al tipo de xml datos.
CREATE TABLE t_xml (c1 int, c2 xml)
El siguiente archivo de formato XML cargaría un archivo de datos en la 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. Importación de campos de longitud fija o ancho fijo
En el ejemplo siguiente se describen 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>
Ejemplos adicionales
Para obtener ejemplos adicionales de archivos de formato no XML y archivos de formato XML, consulte los temas siguientes:
Usar un archivo de formato para omitir una columna de tabla (SQL Server)
Uso de un archivo de formato para omitir un campo de datos (SQL Server)
Tareas relacionadas
Uso de un archivo de formato para la importación en bloque de datos (SQL Server)
Usar un archivo de formato para omitir una columna de tabla (SQL Server)
Uso de un archivo de formato para omitir un campo de datos (SQL Server)
Contenido relacionado
Ninguno.
Véase también
Importar y exportar datos de forma masiva (SQL Server)
Tipos de datos (Transact-SQL)
Archivos de formato no XML (SQL Server)
Archivos de formato para importar o exportar datos (SQL Server)