Образцы XML-файлов форматирования

В примерах этого подраздела показаны ключевые аспекты применения XML-файлов форматирования. Синтаксис файла форматирования не зависит от направления операции; для операций массового импорта и массового экспорта синтаксис одинаков.

В примерах выполняются следующие действия:

  • упорядочивание полей с символьными данными по столбцам таблицы;

  • упорядочивание полей данных в порядке, отличающемся от порядка столбцов таблицы;

  • пропуск поля данных;

  • сопоставление различных типов полей и столбцов;

  • сопоставление XML-данных с таблицей;

  • импорт полей фиксированной длины и полей фиксированной ширины.

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

Дополнительные сведения о создании файлов форматирования см. в разделе Создание файла форматирования.

Примеры

В файлах данных, приведенных в следующих примерах, <tab> обозначает символ табуляции в файле данных, а <return> означает символ возврата каретки.

А. Упорядочивание полей с символьными данными по столбцам таблицы

В следующем примере представлен XML-файл форматирования, описывающий файл данных, в котором содержатся три поля символьных данных. Файл форматирования сопоставляет файл данных с таблицей, содержащей три столбца. Поля данных соответствуют «один к одному» столбцам таблицы.

Таблица (строка): Person (Age int, FirstName varchar(20), LastName varchar(30))

Файл данных (запись): Age<tab>Firstname<tab>Lastname<return>

Следующий XML-файл форматирования считывает данные из файла данных в таблицу.

В элементе <RECORD> файл форматирования представляет значения во всех трех полях в символьном виде. Атрибут TERMINATOR указывает признак конца поля, следующий за значением.

Поля данных соответствуют «один к одному» столбцам таблицы. В элементе <ROW> файла форматирования столбец Age сопоставляется с первым полем, столбец FirstName — со вторым, а столбец LastName — с третьим.

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

Аналогичный пример для базы данных База данных AdventureWorks2008R2 см. в разделе Создание файла форматирования.

Б. Упорядочивание полей данных в порядке, отличающемся от порядка столбцов таблицы

В следующем примере представлен XML-файл форматирования, описывающий файл данных, в котором содержатся три поля символьных данных. Файл форматирования сопоставляет файл данных с таблицей, содержащей три столбца, порядок следования которых отличается от порядка следования полей файла данных.

Таблица (строка): Person (Age int, FirstName varchar(20), LastName varchar(30))

Файл данных (запись): Age<tab>Firstname<tab>Lastname<return>

В элементе <RECORD> файл форматирования представляет значения во всех трех полях в символьном виде.

В элементе <ROW> файла форматирования столбец Age сопоставляется с первым полем, столбец FirstName — с третьим, а столбец LastName — со вторым.

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

Аналогичный пример для базы данных База данных AdventureWorks2008R2 см. в разделе Использование файла форматирования для привязки столбцов таблицы к полям файла данных.

В. Пропуск поля данных

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

Таблица (строка): Person (Age int, FirstName Varchar(20), LastName Varchar(30))

Файл данных (запись): Age<tab>employeeID<tab>Firstname<tab>Lastname<return>

В элементе <RECORD> файла форматирования значения данных представлены во всех четырех полях как символьные данные. Для каждого поля атрибут TERMINATOR указывает признак конца, следующий за значением данных.

В элементе <ROW> файла форматирования столбец Age сопоставляется с первым полем, столбец FirstName — с третьим, а столбец LastName — с четвертым.

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

Аналогичный пример для базы данных База данных AdventureWorks2008R2 см. в разделе Использование файла форматирования для пропуска поля данных.

Г. Сопоставление xsi-типа <FIELD> xsi-типу <COLUMN>

Следующий пример демонстрирует различные типы полей и их сопоставление со столбцами.

<?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>

Д. Сопоставление XML-данных таблице

В следующем примере создается пустая таблица из двух столбцов (t_xml), первый столбец которой сопоставляется с типом данных int, а второй — с типом данных xml.

CREATE TABLE t_xml (c1 int, c2 xml)

Следующий XML-файл форматирования загружает файл данных в таблицу 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>

Е. Импорт полей фиксированной длины и полей фиксированной ширины

В следующем примере описываются поля фиксированной ширины в 10 или 6 символов каждое. Файл форматирования представляет длину и ширину этих полей в виде LENGTH="10" и LENGTH="6" соответственно. Каждая строка файлов данных оканчивается комбинацией символов возврата каретки и перевода строки — {CR}{LF}, которую файл форматирования представляет в виде 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>

Дополнительные примеры

Дополнительные примеры как для файлов форматирования, отличных от XML, так и для XML-файлов форматирования см. в следующих разделах.