Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо:SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
SQL Server предоставляет XML-схему, которая определяет синтаксис для записи XML-файлов форматирования, используемых для массового импорта данных в таблицу SQL Server. XML-файлы форматирования должны придерживаться этой схемы, которая определена при помощи языка XML Schema Definition Language (XSDL). XML-файлы форматирования поддерживаются только в том случае, если средства SQL Server устанавливаются вместе с собственным клиентом SQL Server.
Файл форматирования XML можно использовать с помощью команды bcp, инструкции BULK INSERT, или инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...). Команда bcp позволяет автоматически создавать XML-файл формата для таблицы; Дополнительные сведения см. в служебной программе bcp.
Для массового экспорта и импорта поддерживаются два типа файлов форматирования: файлы форматирования, отличные от XML , и XML-файлы форматирования. Они более гибкие и мощные по сравнению с файлом форматирования в формате, отличном от XML. Сведения о файлах форматирования, отличных от XML, см. в разделе "Использование файлов форматирования, отличных от XML" (SQL Server).
Примечание.
Этот синтаксис, включая оператор массовой вставки, не поддерживается в Azure Synapse Analytics. В Azure Synapse Analytics и других облачных платформах баз данных выполните перемещение данных с помощью инструкции COPY в фабрике данных Azure или с помощью инструкций T-SQL, таких как COPY INTO и PolyBase.
Преимущества XML-файлов форматирования
XML-файлы форматирования описывают сами себя, благодаря чему упрощается их чтение, создание и расширение. Они доступны для чтения, что позволяет легко понять, как данные интерпретируются во время массовых операций.
XML-файлы форматирования содержат типы данных целевых столбцов. Запись XML четко описывает типы данных и элементы файла данных, а также соответствие элементов данных столбцам таблицы.
Это позволяет отделить представление данных в файле от типов данных полей. Например, если файл данных содержит данные в символьном представлении, то тип данных SQL соответствующего столбца будет утрачен.
XML-файл форматирования позволяет загружать из файлов данных поля, содержащие единственный тип данных LOB.
XML-файл форматирования можно улучшить, сохранив совместимость с предыдущими версиями. Кроме того, понятность записи XML облегчает создание нескольких файлов форматирования для некоторого файла данных. Это удобно при сопоставлении всех или некоторых полей данных со столбцами в различных таблицах и представлениях.
Синтаксис XML-файла форматирования не зависит от направления операции; для операций массового импорта и массового экспорта синтаксис одинаков.
XML-файлы форматирования можно использовать для массового импорта данных в таблицы или несекционированные представления и массового экспорта данных.
Для функции OPENROWSET(BULK...) указание целевой таблицы является необязательным. Это обусловлено тем, что эта функция для чтения данных из файла данных использует XML-файл форматирования.
Примечание.
Целевая таблица необходима с помощью команды bcp и BULK INSERT инструкции, которая использует целевые столбцы таблицы для преобразования типов.
Структура XML-файлов форматирования
XML-файлы форматирования, как и файл форматирования в формате, отличном от XML, определяют формат и структуру полей данных в файле данных и сопоставляют их со столбцами целевой таблицы.
Файл в формате XML обладает двумя основными компонентами: <RECORD> и <ROW>.
<RECORD>описывает данные, хранящиеся в файле данных.Каждый
<RECORD>элемент содержит набор одного или нескольких<FIELD>элементов. Эти элементы соответствуют полям в файле данных. Базовый синтаксис:<RECORD> <FIELD .../> [ ...n ] </RECORD>Каждый
<FIELD>элемент описывает содержимое определенного поля данных. Поле может быть сопоставлено только с одним столбцом таблицы. Столбцам не обязательно сопоставлять все поля.Поле в файле данных может иметь фиксированную или переменную длину или завершаться определенным символом. Значение поля может быть представлено как символ (с использованием однобайтового представления), широкого символа (с использованием 2-байтового представления Юникода), собственного формата базы данных или имени файла. Если значение поля представляется в виде имени файла, оно указывает на файл, который содержит значение столбца BLOB в целевой таблице.
<ROW>описывает, как создавать строки данных из файла данных, когда данные из файла импортируются в таблицу SQL Server.Элемент
<ROW>содержит набор<COLUMN>элементов. Эти элементы соответствуют столбцам таблицы. Базовый синтаксис:<ROW> <COLUMN .../> [ ...n ] </ROW>Каждый
<COLUMN>элемент можно сопоставить только с одним полем в файле данных. Порядок элементов<COLUMN>в элементе<ROW>определяет порядок, в котором массовая операция возвращает их. XML-файл форматирования назначает каждому элементу<COLUMN>локальное имя, не имеющее отношения к столбцу целевой таблицы операции массового импорта.
Синтаксис схемы для XML-файлов форматирования
Этот раздел содержит список элементов и атрибутов схемы XML для XML-файлов форматирования. Синтаксис файла форматирования не зависит от направления операции; для операций массового импорта и массового экспорта синтаксис одинаков. В этом разделе также рассматривается, как массовый импорт использует элементы <ROW> и <COLUMN>, а также как поместить значение xsi:type элемента в набор данных.
Сведения о том, как синтаксис соответствует фактическим XML-файлам форматирования, см . в примере XML-файлов форматирования.
Примечание.
Можно изменить файл форматирования, чтобы обеспечить возможность массового импорта данных из файла данных, в котором количество или порядок полей отличаются от количества или порядка столбцов таблицы. Дополнительные сведения см. в разделе "Формат файлов для импорта или экспорта данных" (SQL Server).
Базовый синтаксис схемы XML
Эти синтаксические инструкции показывают только элементы (<BCPFORMAT>, <RECORD>, <FIELD>, <ROW>, и <COLUMN>) и их основные атрибуты.
Примечание.
Дополнительные атрибуты, связанные со значением xsi:type в элементе <FIELD> или <COLUMN>, описаны далее в этой статье.
Элементы схемы
В этом разделе кратко описаны назначения каждого элемента, определяемого схемой XML для XML-файла форматирования. Атрибуты описаны в отдельных разделах далее в этой статье.
<BCPFORMAT>Элемент format-file, определяющий структуру записей заданного файла данных и его соответствие столбцам строки таблицы в таблице.
<RECORD .../>Определяет сложный элемент, содержащий один или несколько
<FIELD>элементов. Порядок, в котором поля объявлены в файле форматирования, является порядком, в котором эти поля будут расположены в файле данных.<FIELD .../>Определяет поле в файле данных, которое содержит данные. Атрибуты этого элемента рассматриваются в атрибутах
<FIELD>элемента далее в этой статье.<ROW .../>Определяет сложный элемент, содержащий один или несколько
<COLUMN>элементов. Порядок элементов<COLUMN>независим от порядка элементов<FIELD>в описанииRECORD. Скорее, порядок элементов<COLUMN>в файле форматирования определяет порядок столбцов в итоговом наборе данных. Поля данных загружаются в том порядке, в котором соответствующие элементы<COLUMN>объявлены в элементе<COLUMN>. Дополнительные сведения см. в статье о том, как массовый<ROW>импорт использует элемент, далее в этой статье.<COLUMN>Определяет столбец как элемент (
<COLUMN>). Каждый<COLUMN>элемент соответствует элементу<FIELD>(идентификатор которого указан вSOURCEатрибуте<COLUMN>элемента). Атрибуты этого элемента рассматриваются в атрибутах<COLUMN>элемента далее в этой статье. См. также раздел «Как массовый импорт использует элемент<COLUMN>» в дальнейшем в этой статье.</BCPFORMAT>Требуется в конце файла форматирования.
<FIELD> Атрибуты элемента
В этом разделе описываются атрибуты <FIELD> элемента, которые приведены в следующем синтаксисе схемы:
<FIELD
ID ="fieldID"
xsi:type ="fieldType"
[ LENGTH ="n" ]
[ PREFIX_LENGTH ="p" ]
[ MAX_LENGTH ="m" ]
[ COLLATION ="collationName" ]
[ TERMINATOR ="terminator" ]
/>
Каждый <FIELD> элемент не зависит от других элементов. Поле описывается на основе следующих атрибутов:
| Атрибут FIELD | Description | Необязательный или Обязательное поле |
|---|---|---|
| ID="fieldID" | Задает логическое имя поля в файле данных. Идентификатор поля является ключом, используемым для обращения к полю. <FIELD ID="fieldID" /> сопоставляется с <COLUMN SOURCE="fieldID" /> |
Обязательное поле |
| xsi:type="fieldType" | Это конструкция XML (используется как атрибут), которая указывает тип экземпляра элемента. Значение fieldType определяет, какие из необязательных атрибутов в конкретном случае требуются. | Обязательный (в зависимости от типа данных) |
| LENGTH="n" | Этот атрибут определяет длину для экземпляра типа данных фиксированной длины. Значение n должно быть положительным целым числом. |
Необязательный, если это явно не требуется значением xsi:type |
| PREFIX_LENGTH="p" | Этот атрибут определяет длину префикса для двоичного представления данных. Значение PREFIX_LENGTH,p должно быть одним из следующих значений: 1, , 24или 8. |
Необязательный, если это явно не требуется значением xsi:type |
| MAX_LENGTH="m" | Этот атрибут является максимальным числом байтов, которые могут храниться в данном поле. Без целевой таблицы максимальная длина столбца не известна. Атрибут MAX_LENGTH ограничивает максимальную длину выходного символьного столбца, ограничивая хранилище, выделенное для значения столбца. Это особенно удобно при использовании OPENROWSET параметра функции BULK в предложении SELECT FROM .Значение m должно быть положительным целым числом. По умолчанию максимальная длина составляет 8 000 символов для столбца char и 4000 символов для столбца nchar . |
Необязательно |
| COLLATION="collationName" |
COLLATION допускается только для полей символов. Список имен параметров сортировки SQL Server см. в разделе "Имя сортировки SQL Server". |
Необязательно |
| TERMINATOR="terminator" | Этот атрибут задает признак конца поля данных. Признаком конца может быть любой символ. Терминатор должен быть уникальным символом, который не является частью данных. По умолчанию терминатор поля — это символ табуляции (представленный как \t). Чтобы представить знак абзаца, используйте \r\n. |
Этот атрибут используется только с xsi:type символьными данными, для которых требуется этот атрибут. |
xsi:typeЗначение
xsi:type— это xml-конструкция (используемая как атрибут), которая определяет тип данных экземпляра элемента. Дополнительные сведения см. в разделе «Значение xsi:type в наборе данных» в этой статье.Значение
xsi:type<FIELD>элемента поддерживает следующие типы данных.<FIELD>xsi:typeЗначенияОбязательные XML-атрибуты
для типа данныхНеобязательные XML-атрибуты
для типа данныхNativeFixedLENGTHНет. NativePrefixPREFIX_LENGTHMAX_LENGTHCharFixedLENGTHCOLLATIONNCharFixedLENGTHCOLLATIONCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONNCharPrefixPREFIX_LENGTHMAX_LENGTH,COLLATIONCharTermTERMINATORMAX_LENGTH,COLLATIONNCharTermTERMINATORMAX_LENGTH,COLLATIONДополнительные сведения о типах данных SQL Server см. в разделе "Типы данных".
<COLUMN>Атрибуты элементаВ этом разделе описываются атрибуты
<COLUMN>элемента, которые приведены в следующем синтаксисе схемы:<COLUMN SOURCE = "fieldID" NAME = "columnName" xsi:type = "columnType" [ LENGTH = "n" ] [ PRECISION = "n" ] [ SCALE = "value" ] [ NULLABLE = { "YES" | "NO" } ] />Поле сопоставлено со столбцом целевой таблицы с использованием следующих атрибутов:
Атрибут COLUMN Description Необязательный или
Обязательное полеSOURCE="fieldID" Задает идентификатор поля, сопоставляемого со столбцом.
<COLUMN SOURCE=fieldID"/> сопоставляется с<FIELD ID=fieldID"/>Обязательное поле NAME="columnName" Задает имя столбца в наборе строк, представленном файлом форматирования. Это имя столбца используется для идентификации столбца в результирующем наборе, и оно не обязательно должно соответствовать имени столбца целевой таблицы. Обязательное поле xsi:type="ColumnType" Это конструкция XML (используется как атрибут), которая указывает тип данных экземпляра элемента. Значение ColumnType определяет, какие необязательные атрибуты необходимы в данном экземпляре.
Заметка: Возможные значения ColumnType и их связанные атрибуты перечислены в таблице элементов<COLUMN>, в разделе значений xsi:type элемента <COLUMN>.Необязательно LENGTH="n" Определяет длину для экземпляра типа данных фиксированной длины. LENGTHиспользуется только в том случае, еслиxsi:typeэто строковый тип данных.
Значение n должно быть положительным целым числом.Необязательный (доступен только в том случае, если xsi:typeтип данных строки)PRECISION="n" Указывает количество цифр в числе. Например, число 123,45 имеет точность 5.
Значение должно быть положительным целым числом.Необязательный (доступен только в том случае, если xsi:typeтип данных с переменным числом)SCALE="int" Указывает количество цифр справа от десятичной запятой в числе. Например, число 123,45 имеет масштаб 2.
Значением должно быть целое число.Необязательный (доступен только в том случае, если xsi:typeтип данных с переменным числом)NULLABLE={ "ДА" | "NO" } Указывает, может ли столбец принимать NULLзначения. Этот атрибут не зависит отFIELDS. Однако, если столбец не допускает значение NULL, а поле указываетNULL(не задавая никакого значения), возникает ошибка во время выполнения.
АтрибутNULLABLEиспользуется только в том случае, если вы выполняете простуюSELECT FROM OPENROWSET(BULK...)инструкцию.Необязательный (доступен для любого типа данных)
xsi:typeЗначение
xsi:type— это xml-конструкция (используемая как атрибут), которая определяет тип данных экземпляра элемента. Дополнительные сведения об использовании функции "Включениеxsi:typeзначения в набор данных" вы найдете в следующем разделе.Элемент
<COLUMN>поддерживает собственные типы данных SQL, как показано ниже.Тип категории <COLUMN>Типы данныхОбязательные XML-атрибуты
для типа данныхНеобязательные XML-атрибуты
для типа данныхИсправлено SQLBIT,SQLTINYINT,SQLSMALLINTSQLINTSQLBIGINTSQLFLT4SQLFLT8SQLDATETIMESQLDATETIM4SQLDATETIM8SQLMONEYSQLMONEY4SQLVARIANTиSQLUNIQUEIDНет. NULLABLEНомер переменной SQLDECIMALиSQLNUMERIC.Нет. NULLABLEPRECISIONSCALEПеременная дата и время SQLDATETIME2SQLTIMESQLDATETIMEOFFSETНет. NULLABLE,SCALELOB SQLIMAGE,CharLOB,SQLTEXTиSQLUDTНет. NULLABLEСимвольный LOB SQLNTEXTНет. NULLABLEДвоичная строка SQLBINARYиSQLVARYBIN.Нет. NULLABLE,LENGTHСимвольная строка SQLCHAR,SQLVARYCHAR,SQLNCHARиSQLNVARCHARНет. NULLABLE,LENGTHВнимание
Для массового экспорта или импорта данных SQLXML используйте один из следующих типов данных в файле форматирования:
SQLCHARилиSQLVARYCHAR(данные отправляются на клиентской кодовой странице или на кодовой странице, подразумеваемой параметрами сортировки), илиSQLNCHAR(данные отправляются как Юникод)SQLNVARCHARилиSQLBINARY(SQLVARYBINданные отправляются без какого-либо преобразования).Дополнительные сведения о типах данных SQL Server см. в разделе "Типы данных".
Как элемент <ROW> используется для массового импорта
Элемент <ROW> игнорируется в некоторых контекстах.
<ROW> Влияет ли элемент на операцию массового импорта, зависит от того, как выполняется операция:
Команда bcp
При загрузке данных в целевую таблицу bcp игнорирует
<ROW>компонент. Вместо этого команда bcp загружает данные с учетом типов столбцов целевой таблицы.операторы Transact-SQL (
BULK INSERTиOPENROWSETпоставщик большого набора строк)При массовом импорте данных в таблицу Transact-SQL инструкции используют компонент
<ROW>для генерации входного набора строк. Кроме того, Transact-SQL операторы выполняют соответствующие преобразования типов на основе типов столбцов, указанных в<ROW>, и соответствующего столбца в таблице назначения. При несовпадении типов столбцов в файле форматирования и в целевой таблице производится дополнительное преобразование типов, Это преобразование дополнительного типа может привести к некоторому несоответствию (т. е. потере точности) в поведении поставщика массовой выборки строкBULK INSERTилиOPENROWSETпо сравнению с bcp.Сведения в элементе
<ROW>позволяют создавать строку, не требуя дополнительных сведений. По этой причине можно создать набор строк с помощью инструкцииSELECT(SELECT * FROM OPENROWSET(BULK <data-file> FORMATFILE=<xml-format-file>).Для
OPENROWSET BULKпредложения требуется файл форматирования. Преобразование из типа данных поля в тип данных столбца доступно только в XML-файле форматирования.
Как элемент <COLUMN> используется для массового импорта
Для массового импорта данных в таблицу элементы <COLUMN> в формате сопоставляют поле файла данных со столбцами таблицы, указав:
позицию каждого поля в строке файла данных;
тип столбца, используемый для преобразования типа данных поля в необходимый тип данных столбца.
Если столбец не сопоставляется с полем, поле не копируется в созданные строки. Такое поведение позволяет файлам данных формировать строки с различными столбцами (в разных таблицах).
Аналогичным образом для массового экспорта данных из таблицы каждый <COLUMN> в файле форматирования сопоставляет столбец из строки входной таблицы с соответствующим полем в выходном файле данных.
xsi:type Поместите значение в набор данных
При проверке XML-документа с помощью языка определения схем XML (XSD) значение xsi:type не помещается в набор данных. Однако вы можете поместить xsi:type сведения в набор данных, загрузив XML-файл формата в XML-документ (например, myDoc), как показано в следующем фрагменте кода:
...;
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");
}
Примеры XML-файлов форматирования
В этом разделе содержатся сведения об использовании XML-файлов форматирования в различных случаях, включая пример Adventure Works.
Примечание.
В файлах данных, приведенных в следующих примерах, <tab> обозначает символ табуляции в файле данных, а <return> означает символ возврата каретки.
Эти примеры иллюстрируют ключевые аспекты применения XML-файлов форматирования.
- Упорядочить поля символьных данных так же, как столбцы таблицы
- Порядок полей данных и столбцов таблицы по-разному
- Опущено поле данных
- Сопоставление различных типов полей с столбцами
- Сопоставление XML-данных с таблицей
- Импорт полей фиксированной длины или фиксированной ширины
- Дополнительные примеры
Сведения о создании файлов форматирования см. в статье "Создание файла формата с помощью BCP(SQL Server)".
А. Упорядочить поля символьных данных так же, как столбцы таблицы
В следующем примере представлен 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="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>
Примечание.
Аналогичный AdventureWorks2025 пример см. в статье "Создание файла форматирования с помощью bcp (SQL Server)".
B. Порядок полей данных и столбцов таблицы по-разному
В следующем примере представлен 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="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>
Примечание.
Аналогичный AdventureWorks2025 пример см. в разделе "Использование файла форматирования" для сопоставления столбцов таблиц с полями файлов данных (SQL Server).
В. Опущено поле данных
В следующем примере представлен XML-файл форматирования, описывающий файл данных, в котором содержатся четыре поля символьных данных. Файл форматирования сопоставляет файл данных с таблицей, содержащей три столбца. Второе поле данных не соответствует столбцу таблицы.
-
Таблица (строка):
Person (Age INT, FirstName VARCHAR(20), LastName VARCHAR(30)) -
Файл данных (запись):
Age<tab>FirstName<tab>LastName<return>
В элементе <RECORD> файла форматирования значения данных представлены во всех четырех полях как символьные данные. Для каждого поля атрибут TERMINATOR указывает признак конца поля, следующий за значением.
В элементе <ROW> файла форматирования столбец Age сопоставляется с первым полем, столбец FirstName — с третьим, а столбец LastName — с четвертым.
<?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>
Примечание.
Аналогичный AdventureWorks2025 пример см. в разделе "Использование файла формата" для пропуска поля данных (SQL Server).
D. Сопоставьте <FIELD> xsi:type с <COLUMN> xsi:type
Следующий пример демонстрирует различные типы полей и их сопоставление со столбцами.
<?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>
Е. Сопоставление XML-данных с таблицей
В следующем примере создается пустая таблица из двух столбцов (t_xml), первый столбец которой сопоставляется с типом данных int , а второй — с типом данных xml .
CREATE TABLE t_xml (c1 INT, c2 XML);
Следующий XML-файл форматирования загружает файл данных в таблицу 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. Импорт полей фиксированной длины или фиксированной ширины
В следующем примере описываются поля фиксированной ширины в 10 или 6 символов каждое. Файл форматирования представляет длину и ширину этих полей в виде LENGTH="10" и LENGTH="6"соответственно. Каждая строка файлов данных заканчивается сочетанием возврат каретки-перенос строки, <CR><LF>, которое файл формата представляет как 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>
Дополнительные примеры
Дополнительные примеры файлов форматирования, отличных от XML и XML-файлов, см. в следующих статьях:
- Использование файла форматирования для пропуска столбца таблицы (SQL Server)
- Использование файла форматирования для пропуска поля данных (SQL Server)
- Использование файла форматирования для сопоставления столбцов таблиц с полями файлов данных (SQL Server)
Связанные задачи
- Создание файла форматирования с помощью bcp (SQL Server)
- Использование файла форматирования для массового импорта данных (SQL Server)
- Использование файла форматирования для пропуска столбца таблицы (SQL Server)
- Использование файла форматирования для пропуска поля данных (SQL Server)
- Использование файла форматирования для сопоставления столбцов таблиц с полями файлов данных (SQL Server)