Использование файла форматирования для пропуска поля данных (SQL Server)

Количество полей в файле данных может превышать количество столбцов в таблице. В этом подразделе описан процесс изменения файлов форматирования в форматах XML и не XML с целью сопоставления столбцов таблицы с полями файла данных и пропуска остальных полей.

ПримечаниеПримечание

И файлы форматирования, отличные от XML, и XML-файлы форматирования могут использоваться для массового импорта файла данных в таблицу с помощью команды bcp, а также инструкции BULK INSERT или INSERT ... SELECT * FROM OPENROWSET(BULK...). Дополнительные сведения см. в разделе Использование файла форматирования для массового импорта данных (SQL Server).

Образец таблицы и файла данных

В примерах этого подраздела используются следующие таблица и файл данных.

Образец таблицы

Для работы примеров необходимо, чтобы в образце базы данных AdventureWorks2012 в схеме dbo была создана таблица myTestSkipField. Чтобы создать эту таблицу, в редакторе запросов среды Microsoft Среда SQL Server Management Studio, выполните следующий программный код.

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

Образец файла данных

Файл данных myTestSkipField-c.dat содержит следующие записи:

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

Для массового импорта из файла myTestSkipField-c.dat в таблицу myTestSkipField файл форматирования должен сделать следующий код:

  • сопоставить первое поле данных с первым столбцом, PersonID;

  • пропустить второе поле данных;

  • сопоставить третье поле данных со вторым столбцом, FirstName;

  • сопоставить четвертое поле данных с третьим столбцом, LastName.

Не XML-файлы форматирования для дополнительных полей данных

Файл форматирования myTestSkipField.fmt сопоставляет поля в файле myTestSkipField-c.dat со столбцами таблицы myTestSkipField. Файл форматирования имеет символьный формат данных. Чтобы пропустить столбец, необходимо изменить его порядковый номер на «0», как показано для столбца ExtraField в файле форматирования.

Файл форматирования myTestSkipField.fmt содержит следующие данные:

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
ПримечаниеПримечание

Дополнительные сведения о не XML-файлах форматирования см. в разделе Файлы формата, отличные от XML (SQL Server).

Примеры

В следующем примере используется инструкция INSERT ... SELECT * FROM OPENROWSET(BULK...) с файлом форматирования myTestSkipField.fmt. В примере выполняется массовый импорт файла данных myTestSkipField-c.dat в таблицу myTestSkipField. Создание образца таблицы и файла данных см. выше в разделе «Образец таблицы и файла данных».

В редакторе запросов среды Среда SQL Server Management Studio выполните следующий код:

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

XML-файл форматирования для дополнительных полей данных

Файл форматирования в этом примере создан на основе другого файла форматирования myTestSkipField.xml, в котором количество полей совпадает с количеством столбцов таблицы myTestSkipField. Содержимое этого файла форматирования см. в разделе Создание файла форматирования (SQL Server).

Файл форматирования myTestSkipField.xml сопоставляет поля в файле myTestSkipField-c.dat со столбцами таблицы myTestSkipField. Файл форматирования имеет символьный формат данных.

Файл форматирования myTestSkipField.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="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>

Примеры

В следующем примере используется инструкция INSERT ... SELECT * FROM OPENROWSET(BULK...) с файлом форматирования myTestSkipField.Xml. В примере выполняется массовый импорт файла данных myTestSkipField-c.dat в таблицу myTestSkipField. Создание образца таблицы и файла данных см. выше в разделе «Образец таблицы и файла данных».

В редакторе запросов среды Среда SQL Server Management Studio выполните следующий код:

USE AdventureWorks2012;
GO
INSERT INTO myTestSkipField 
  SELECT *
      FROM  OPENROWSET(BULK  'C:\myTestSkipField-c.dat',
      FORMATFILE='C:\myTestSkipField.xml'  
       ) AS t1;
GO 
ПримечаниеПримечание

Дополнительные сведения о синтаксисе XML-схемы и дополнительные образцы XML-файлов форматирования см. в разделе XML-файлы форматирования (SQL Server).

См. также

Справочник

Программа bcp

BULK INSERT (Transact-SQL)

OPENROWSET (Transact-SQL)

Основные понятия

Пропуск столбца таблицы с помощью файла форматирования (SQL Server)

Использование файла форматирования для сопоставления столбцов таблицы с полями файла данных (SQL Server)