Compartir a través de


Usar un archivo de formato para omitir un campo de datos (SQL Server)

Un archivo de datos puede contener más campos que el número de columnas de la tabla. En este tema se describe la modificación de archivos de formato XML y no XML para dar cabida a un archivo de datos con más campos asignando las columnas de tabla a los campos de datos correspondientes e ignorando los campos adicionales.

Nota:

Se puede usar un archivo de formato no XML o XML para importar de forma masiva un archivo de datos en la tabla mediante un comando bcp, una instrucción BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...). Para obtener más información, vea Usar un archivo de formato para importar datos de forma masiva (SQL Server).

Archivo de datos de ejemplo y tabla

Los ejemplos de archivos de formato modificados de este tema se basan en la tabla y el archivo de datos siguientes.

Tabla de ejemplo

Los ejemplos requieren que se cree una tabla denominada myTestSkipField en la base de datos de ejemplo AdventureWorks2012 bajo el esquema dbo. Para crear esta tabla, en el Editor de consultas de Microsoft SQL Server Management Studio, ejecute el código siguiente:

USE AdventureWorks2012;  
GO  
CREATE TABLE myTestSkipField   
   (  
   PersonID smallint,  
   FirstName nvarchar(50) ,  
   LastName nvarchar(50)   
   );  
GO  

Archivo de datos de ejemplo

El archivo de datos, myTestSkipField-c.dat, contiene los siguientes registros:

1,Skipme,DataField3,DataField4  
1,Skipme,DataField3,DataField4  
1,Skipme,DataField3,DataField4  

Para importar datos de forma masiva desde myTestSkipField-c.dat en la myTestSkipField tabla, el archivo de formato debe hacer lo siguiente:

  • Asigne el primer campo de datos a la primera columna, PersonID.

  • Omita el segundo campo de datos.

  • Asigne el tercer campo de datos a la segunda columna, FirstName.

  • Asigne el cuarto campo de datos a la tercera columna, LastName.

Archivo de formato no XML para más campos de datos

El siguiente archivo de formato, myTestSkipField.fmt, asigna los campos de myTestSkipField-c.dat a las columnas de la myTestSkipField tabla. El archivo de formato usa el formato de datos de caracteres. Saltar una asignación de columnas requiere que cambies su valor de ordenación de columna a 0, como se muestra para la columna ExtraField en el archivo de formato.

El myTestSkipField.fmt archivo de formato contiene la siguiente información:

9.0  
4  
1       SQLCHAR       0       7       ","      1     PersonID               ""  
2       SQLCHAR       0       100       ","    0     ExtraField             SQL_Latin1_General_CP1_CI_AS  
3       SQLCHAR       0       100     ","      2     FirstName              SQL_Latin1_General_CP1_CI_AS  
4       SQLCHAR       0       100     "\r\n"   3     LastName               SQL_Latin1_General_CP1_CI_AS  
  

Nota:

Para obtener información sobre la sintaxis de archivos de formato no XML, vea Archivos de formato no XML (SQL Server).

Ejemplos

En el siguiente ejemplo se usa INSERT ... SELECT * FROM OPENROWSET(BULK...) con el archivo de formato myTestSkipField.fmt. En el ejemplo se importa masivamente el myTestSkipField-c.dat archivo de datos en la myTestSkipField tabla. Para crear la tabla de ejemplo y el archivo de datos, vea "Archivo de datos de ejemplo y tabla", anteriormente en este tema.

En el Editor de consultas de SQL Server Management Studio, ejecute el código siguiente:

USE AdventureWorks2012;  
GO  
INSERT INTO myTestSkipField   
   SELECT *  
      FROM  OPENROWSET(BULK  'C:\myTestSkipField-c.dat',  
      FORMATFILE='C:\myTestSkipField.fmt'    
       ) AS t1;  
GO   

Archivo de formato XML para más campos de datos

El archivo de formato presentado en este ejemplo se basa en otro archivo de formato, , myTestSkipField.xmlque usa el formato de datos de caracteres en todo y cuyos campos corresponden exactamente en número y orden a las columnas de la myTestSkipField tabla. Para ver el contenido de ese archivo de formato, vea Crear un archivo de formato (SQL Server).

El siguiente archivo de formato, myTestSkipField.xml, asigna los campos de myTestSkipField-c.dat a las columnas de la myTestSkipField tabla. El archivo de formato usa el formato de datos de caracteres.

El myTestSkipField.xml archivo de formato contiene la siguiente informació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="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>  
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>  
 </RECORD>  
 <ROW>  
  <COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>  
  <COLUMN SOURCE="3" NAME="FirstName" xsi:type="SQLNVARCHAR"/>  
  <COLUMN SOURCE="4" NAME="LastName" xsi:type="SQLNVARCHAR"/>  
 </ROW>  
</BCPFORMAT>  

Ejemplos

En el siguiente ejemplo, se usa INSERT ... SELECT * FROM OPENROWSET(BULK...) utilizando el archivo de formato myTestSkipField.Xml. En el ejemplo se importa masivamente el myTestSkipField-c.dat archivo de datos en la myTestSkipField tabla. Para crear la tabla de ejemplo y el archivo de datos, vea "Archivo de datos de ejemplo y tabla", anteriormente en este tema.

En el Editor de consultas de SQL Server Management Studio, ejecute el código siguiente:

USE AdventureWorks2012;  
GO  
INSERT INTO myTestSkipField   
  SELECT *  
      FROM  OPENROWSET(BULK  'C:\myTestSkipField-c.dat',  
      FORMATFILE='C:\myTestSkipField.xml'    
       ) AS t1;  
GO  
  

Nota:

Para obtener información sobre la sintaxis del esquema XML y ejemplos adicionales de archivos de formato XML, vea Archivos de formato XML (SQL Server).

Véase también

utilidad bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Usar un archivo de formato para omitir una columna de tabla (SQL Server)
Uso de un archivo de formato para asignar columnas de tabla a campos de un archivo de datos (SQL Server)