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