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.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Server proporciona un esquema XML que define la sintaxis para escribir archivos de formato XML que se usarán para la importación en bloque de datos en una tabla de SQL Server. Los archivos de formato XML deben adherirse a este esquema, que se define en el lenguaje de definición de esquemas 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 una instrucción 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, consulte la utilidad bcp.
Se admiten dos tipos de archivos de formato para la importación y exportación masivas: 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 Usar archivos de formato no XML (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, realice el movimiento de datos a través de la instrucción COPY en Azure Data Factory o mediante instrucciones T-SQL como COPY INTO y PolyBase.
Ventajas de los archivos de formato XML
Los archivos de formato XML son autodescriptivos, lo que facilita su lectura, creación y ampliación. Son legibles por 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 elementos de datos del archivo de datos, así como la asignación entre los elementos de datos y las columnas de las tablas.
Esta característica habilita la separación entre la representación de los datos en el archivo de datos y el tipo de datos asociado a cada campo del archivo. Por ejemplo, si un archivo de datos contiene una representación de caracteres de los datos, se perderá el tipo de columna SQL correspondiente.
Un archivo de formato XML permite cargar un campo que contenga un único tipo de datos de objeto grande (LOB) desde un archivo de datos.
Un archivo de formato XML puede mejorarse manteniendo su compatibilidad con sus versiones anteriores. Además, la claridad de la codificación XML facilita la creación de varios archivos de formato para un determinado archivo de datos. Esto es útil si tiene que asignar todos o algunos 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 exportaciones e importaciones masivas.
Puede usar los archivos de formato XML para importar los datos de forma masiva en tablas o vistas sin particiones y para exportar los datos de forma masiva.
Para 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 BULK INSERT instrucción , que usa las columnas de la tabla de destino para realizar la conversión de tipos.
Estructura de los 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 dichos campos a columnas de una sola tabla de destino.
Un archivo de formato XML posee dos componentes principales y <RECORD><ROW>:
<RECORD>describe los datos a medida que se almacenan en el archivo de datos.Cada
<RECORD>elemento contiene un conjunto de uno o varios<FIELD>elementos. Dichos elementos corresponden a los campos del archivo de datos. La sintaxis básica es la siguiente:<RECORD> <FIELD .../> [ ...n ] </RECORD>Cada
<FIELD>elemento describe el contenido de un campo de datos específico. Un campo solo puede asignarse a una columna de la tabla. No es necesario asignar todos los campos a columnas.Un campo de un archivo de datos puede tener una longitud fija o variable, o bien terminar mediante un carácter. Un valor de campo se puede representar como: un carácter (mediante una representación de un solo byte), un carácter ancho (mediante una representación de 2 bytes Unicode), un formato de base de datos nativo o un nombre de archivo. Si un valor de campo se representa como un nombre de archivo, éste 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
<ROW>elemento contiene un conjunto de<COLUMN>elementos. Estos elementos corresponden a las columnas de la tabla. La sintaxis básica es la siguiente:<ROW> <COLUMN .../> [ ...n ] </ROW>Cada
<COLUMN>elemento se puede asignar solo a un campo del archivo de datos. El orden de los<COLUMN>elementos del<ROW>elemento define el orden en el que la operación masiva los devuelve. 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 en bloque.
Sintaxis de esquema para archivos de formato XML
Esta sección contiene un resumen de los elementos y atributos del esquema XML para 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. En esta sección también se describe 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 la sintaxis en archivos de formato XML reales, consulte Archivos de formato XML de ejemplo.
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 y/o el orden de los campos difieren del número y/o el orden de las columnas de la tabla. Para obtener más información, vea Formato de archivos para importar o exportar datos (SQL Server).
Sintaxis básica del esquema XML
Estas instrucciones de sintaxis muestran solo los elementos (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>y <COLUMN>) y sus atributos básicos.
Nota
Los atributos adicionales asociados al valor de xsi:type en un <FIELD> elemento o <COLUMN> se describen más adelante en este artículo.
Elementos de esquema
En esta sección se resume la finalidad 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 artículo.
<BCPFORMAT>El elemento format-file que define la estructura de registros de un archivo de datos determinado y su correspondencia con las columnas de una fila de la tabla.
<RECORD .../>Define un elemento complejo que contiene uno o varios
<FIELD>elementos. El orden en que se declaran los campos en el archivo de formato es el orden en que estos campos aparecen en el archivo de datos.<FIELD .../>Define un campo del archivo de datos que contiene datos. Los atributos de este elemento se describen en Atributos del
<FIELD>elemento, más adelante en este artículo.<ROW .../>Define un elemento complejo que contiene uno o varios
<COLUMN>elementos. El orden de los<COLUMN>elementos es independiente del orden de los elementos de<FIELD>unaRECORDdefinición. En su lugar, el orden de los<COLUMN>elementos de 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 correspondientes<COLUMN>en el<COLUMN>elemento . Para obtener más información, consulte Cómo la importación masiva utiliza el elemento<ROW>, más adelante en este artículo.<COLUMN>Define una columna como un elemento (
<COLUMN>). Cada<COLUMN>elemento corresponde a un<FIELD>elemento (cuyo identificador se especifica en elSOURCEatributo del<COLUMN>elemento). Los atributos de este elemento se describen en Atributos del<COLUMN>elemento, más adelante en este artículo. Vea también Cómo la importación masiva usa el elemento<COLUMN>más adelante en este artículo.</BCPFORMAT>Obligatorio para finalizar el archivo de formato.
Atributos del <FIELD> elemento
En esta sección se describen los atributos del <FIELD> elemento, que se resumen en la sintaxis de esquema siguiente:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Cada <FIELD> elemento es independiente de los demás. Un campo se describe según los atributos siguientes:
| Atributo de campo | Descripción | Opcional / Obligatorio |
|---|---|---|
| ID="fieldID" | Especifica el nombre lógico del campo incluido en el archivo de datos. El valor de ID de un campo es la clave utilizada para referirse al campo. <FIELD ID="fieldID" /> se asigna a <COLUMN SOURCE="fieldID" /> |
Obligatorio |
| xsi:type="fieldType" | Es una construcción XML (utilizada como atributo) que identifica el tipo de la instancia del elemento. El valor de fieldType determina cuál de los atributos opcionales que necesita en una instancia determinada. | Obligatorio (en función del 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 binarios. , PREFIX_LENGTHp, debe ser uno de los siguientes valores: 1, 2, 4o 8. |
Opcional a menos que el valor xsi:type lo requiera |
| 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 MAX_LENGTH atributo restringe la longitud máxima de una columna de caracteres de salida, lo que limita el almacenamiento asignado para el valor de columna. Esto es especialmente conveniente cuando se utiliza la opción OPENROWSET de la función BULK 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" |
COLLATION solo se permite para campos de caracteres. Para obtener una lista de los nombres de intercalación de SQL Server, vea Nombre de intercalación de SQL Server. |
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 del campo es el carácter de tabulación (representado como \t). Para representar una marca de párrafo, use \r\n. |
Este atributo solo se usa con una xsi:type de datos de caracteres, que requiere este atributo. |
xsi:typevalores del<FIELD>elementoEl
xsi:typevalor es una construcción XML (usada como un atributo) que identifica el tipo de datos de una instancia de un elemento. Para obtener más información, consulte la sección Colocar el valor xsi:type en un conjunto de datos de este artículo.El
xsi:typevalor del<FIELD>elemento admite los siguientes tipos de datos.<FIELD>xsi:typevaloresAtributos XML necesarios
para el tipo de datosAtributos XML opcionales
para el tipo de datosNativeFixedLENGTHninguno. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONPara obtener más información sobre los tipos de datos de SQL Server, vea Tipos de datos.
Atributos del
<COLUMN>elementoEn esta sección se describen los atributos del
<COLUMN>elemento, que se resumen en la sintaxis de esquema siguiente:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Un campo se asigna a una columna de la tabla de destino mediante los atributos siguientes:
Atributo de COLUMN Descripción Opcional /
ObligatorioSOURCE="fieldID" Especifica el Id. del campo que se asigna a la columna.
<COLUMN SOURCE=fieldID"/> se corresponde con <FIELD ID=fieldID"/>Obligatorio NAME="columnName" Especifica el nombre de la columna en el conjunto de filas representado por el archivo de formato. Este nombre de columna se utiliza para identificar la columna en el conjunto de resultados y no es necesario que corresponda al nombre de columna usado en la tabla de destino. Obligatorio xsi:type="ColumnType" Es una construcción XML (utilizada como atributo) que identifica el tipo de datos de la instancia del elemento. El valor de ColumnType determina cuál de los atributos opcionales que necesita en una instancia determinada.
Nota: Los valores posibles de ColumnType y sus atributos asociados se enumeran en la<COLUMN>tabla de elementos de los valores xsi:type de la <sección del elemento COLUMN>.Opcional LENGTH="n" Define la longitud de una instancia de un tipo de datos de longitud fija. LENGTHsolo se usa cuandoxsi:typees un tipo de datos de cadena.
El valor de n debe ser un entero positivo.Opcional (disponible solo si es xsi:typeun 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 es xsi:typeun tipo de datos de número variable)SCALE="int" Indica el número de dígitos situados a la derecha de la coma decimal de 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 es xsi:typeun tipo de datos de número variable)NULLABLE={ "YES" | "NO" } Indica si una columna puede asumir NULLvalores. Este atributo es independiente deFIELDS. Sin embargo, si una columna no admite valores NULL y el campo especificaNULL(sin especificar ningún valor), se produce un error en tiempo de ejecución.
El atributoNULLABLEse utiliza solo si haces una declaración simpleSELECT FROM OPENROWSET(BULK...).Opcional (disponible para cualquier tipo de datos)
xsi:typevalores del<COLUMN>elementoEl
xsi:typevalor es una construcción XML (usada como un atributo) que identifica el tipo de datos de una instancia de un elemento. Para obtener más información acerca de su uso, consulte "Colocar el valorxsi:typeen un conjunto de datos", más adelante en este tema.El
<COLUMN>elemento admite tipos de datos SQL nativos, como se indica a continuación:Categoría de tipo <COLUMN>tipos de datosAtributos XML necesarios
para el tipo de datosAtributos XML opcionales
para el tipo de datosFija SQLBIT,SQLTINYINT,SQLSMALLINT,SQLINT,SQLBIGINT,SQLFLT4,SQLFLT8,SQLDATETIME,SQLDATETIM4,SQLDATETIM8,SQLMONEY,SQLMONEY4,SQLVARIANT, ySQLUNIQUEIDninguno. NULLABLENúmero de variable SQLDECIMALySQLNUMERICninguno. NULLABLE, ,PRECISION,SCALEFecha y hora variables SQLDATETIME2, ,SQLTIME,SQLDATETIMEOFFSETninguno. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTySQLUDTninguno. NULLABLELOB de caracteres SQLNTEXTninguno. NULLABLECadena binaria SQLBINARYySQLVARYBINninguno. NULLABLE,LENGTHCadena de caracteres SQLCHAR,SQLVARYCHAR,SQLNCHARySQLNVARCHARninguno. NULLABLE,LENGTHImportante
Para exportar o importar datos SQLXML de forma masiva, use uno de los siguientes tipos de datos en el archivo de formato:
SQLCHARoSQLVARYCHAR(los datos se envían en la página de códigos de cliente o en la página de códigos implícita por la intercalación),SQLNCHARoSQLNVARCHAR(los datos se envían como Unicode) oSQLBINARYSQLVARYBIN(los datos se envían sin ninguna conversión).Para obtener más información sobre los tipos de datos de SQL Server, vea Tipos de datos.
Cómo la importación masiva usa el elemento <ROW>
El <ROW> elemento se omite en algunos contextos. Si el <ROW> elemento afecta a una operación de importación masiva depende de cómo se realice la operación:
Comando bcp
Cuando los datos se cargan en una tabla de destino, bcp omite el
<ROW>componente. En su lugar, bcp carga los datos en función de los tipos de columnas de la tabla de destino.Instrucciones Transact-SQL (proveedor de conjuntos de filas en bloque de
BULK INSERTyOPENROWSET)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 sentencias de Transact-SQL realizan conversiones de tipos adecuadas basándose en los tipos de columna especificados en<ROW>y la columna correspondiente de la tabla de destino. Si los tipos de columna especificados en el archivo de formato y la tabla de destino no coinciden, se realiza una conversión de tipo adicional. Esta conversión de tipos adicional podría provocar cierta discrepancia (es decir, una pérdida de precisión) en el comportamiento del proveedor de conjuntos de filas masivasBULK INSERToOPENROWSETen comparación con bcp.La información del
<ROW>elemento permite construir una fila sin necesidad de información adicional. Por este motivo, puede generar un conjunto de filas mediante unaSELECTinstrucción (SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).La
OPENROWSET BULKcláusula requiere un archivo de formato. 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 la importación masiva usa el elemento <COLUMN>
Para importar datos de forma masiva en una tabla, los <COLUMN> elementos de un archivo de formato asignan un campo de archivo de datos a columnas de tabla especificando:
La posición de cada campo dentro de una fila del archivo de datos.
El tipo de columna, que se utiliza 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 a un archivo de datos generar filas con distintas columnas (en tablas diferentes).
Del mismo modo, para exportar datos de forma masiva desde una tabla, cada uno <COLUMN> de los archivos 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 xsi:type valor en un conjunto de datos
Cuando se valida un documento XML mediante el lenguaje de definición de esquema XML (XSD), el xsi:type valor no se coloca en el conjunto de datos. Sin embargo, puede colocar la xsi:type información 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 varios 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 y <return> indica un retorno de carro.
Los ejemplos muestran los aspectos clave del uso de archivos de formato XML, del siguiente modo:
- Ordenar campos de datos de caracteres igual que las columnas de tabla
- Ordenar campos de datos y columnas de tabla de forma diferente
- Omitir un campo de datos
- Asignar diferentes tipos de campos a columnas
- Mapear datos XML a una tabla
- Importación de campos de longitud fija o ancho fijo
- Ejemplos adicionales
Para obtener información sobre cómo crear archivos de formato, vea Crear un archivo de formato con bcp (SQL Server).
A. Ordenar campos de datos de caracteres como 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 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="http://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 equivalenteAdventureWorks2025, vea Creación de un archivo de formato con bcp (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 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>FirstName<tab>LastName<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.
<?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="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 equivalenteAdventureWorks2025, vea Usar un archivo de formato para asignar columnas de tabla a campos de archivo de datos (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):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Archivo de datos (registro):
Age<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.
<?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="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 equivalenteAdventureWorks2025, vea Usar un archivo de formato para omitir un campo de datos (SQL Server).
D. Asignación de <FIELD> xsi:type a <COLUMN> xsi:type
En el ejemplo siguiente se muestran tipos de campos diferentes y sus asignaciones a columnas.
<?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 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
En el ejemplo siguiente se crea una tabla vacía de dos columnas (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="http://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
En el siguiente ejemplo 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 una de las filas 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="http://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 más ejemplos de archivos de formato no XML y archivos de formato XML, consulte los siguientes artículos:
- Uso de 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)
- Uso de un archivo de formato para asignar columnas de tabla a campos de un archivo de datos (SQL Server)
Tareas relacionadas
- Creación de un archivo de formato con bcp (SQL Server)
- Uso de un archivo de formato para la importación masiva de datos (SQL Server)
- Uso de 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)
- Uso de un archivo de formato para asignar columnas de tabla a campos de un archivo de datos (SQL Server)