Общие сведения о файлах форматирования

Изменения: 17 июля 2006 г.

Файл форматирования содержит сведения о форматировании для каждого поля в файле данных по отношению к определенной таблице. Файл форматирования содержит все данные, необходимые для выполнения массового экспорта или импорта данных. Он обеспечивает уровень гибкости, при котором почти или совсем не требуется редактирования файлов данных для согласования с другими форматами данных или для чтения данных, подготовленных другими программами.

В Microsoft SQL Server 2000 и более ранних версиях операции массового экспорта и импорта работали с одним типом файла форматирования. Он используется и в Microsoft SQL Server 2005, но кроме него поддерживаются также и новые XML-файлы форматирования. Файлы первого типа называются файлами форматирования не в формате XML.

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

  • Описывает сам себя, прост для чтения, создания и расширения.
  • Содержит типы данных целевых столбцов.
    Это позволяет отделить представление данных в файле от типов данных полей. Например, если файл данных содержит данные в символьном представлении, то тип данных SQL соответствующего столбца будет утрачен.
    Команда bcp и инструкция BULK INSERT при преобразовании типов используют сведения о столбце целевой таблицы. Это делает ее использование обязательным. В противоположность этому для чтения данных из файла данных функция OPENROWSET(BULK...) работает с XML-файлами форматирования. Это делает использование целевой таблицы необязательным.
  • Позволяет загружать из файлов данных поля, содержащие единственный тип данных LOB.

Дополнительные сведения о структуре обоих типов файлов форматирования см. далее в подразделе «Примеры».

Когда необходим файл форматирования?

Инструкция INSERT... SELECT * FROM OPENROWSET(BULK...) всегда требует наличия файла форматирования.

Для программы bcp или инструкции BULK INSERT в простых случаях использование файла форматирования необязательно и требуется редко. Однако при выполнении сложных операций массового импорта файл форматирования очень часто необходим. Например, при импорте данных из файла данных в таблицу файл форматирования может потребоваться в следующих ситуациях.

  • У пользователя нет разрешений на выполнение инструкции INSERT для некоторых столбцов целевой таблицы.
  • Один и тот же файл данных используется в качестве источника для нескольких таблиц с разными схемами.
  • Порядок столбцов файла данных отличается от порядка столбцов в целевой таблице.
  • Элементы в файле данных имеют другие разделители или длину префикса.

Файлы форматирования необходимы, если:

  • число полей в файле данных отличается от числа столбцов в целевой таблице, например:
    • целевая таблица содержит по крайней мере один столбец, для которого либо задано значение по умолчанию, либо разрешено значение NULL;
    • пользователи не имеют разрешений на выполнение инструкций SELECT/INSERT в одном или нескольких столбцах таблицы;
    • один и тот же файл данных используется для двух или более таблиц с разными схемами.
  • порядок столбцов в файле данных отличается от порядка столбцов в таблице;
  • завершающие символы или длины префиксов отличаются в столбцах файла данных.
Aa337558.note(ru-ru,SQL.90).gifПримечание.
Если отсутствует файл форматирования и если в команде bcp указан параметр формата данных (-n, -c, -w или -N) либо операция BULK INSERT указана с параметром DATAFILETYPE, то указанный формат используется как метод по умолчанию для интерпретации полей файла данных.

Примеры

В следующих примерах показана структура файлов, отличных от XML, и XML-файлов форматирования. Эти файлы форматирования соответствуют таблице HumanResources.myTeam в образце базы данных AdventureWorks. Эта таблица содержит четыре столбца: EmployeeID, Name, Title и ModifiedDate.

Aa337558.note(ru-ru,SQL.90).gifПримечание.
Дополнительные сведения о таблице и способе ее создания см. в разделе Создание таблицы HumanResources.myTeam.

А. Использование файла форматирования не в формате XML

Следующий файл форматирования не в формате XML использует собственный формат данных SQL Server для таблицы HumanResources.myTeam. Этот файл форматирования был создан с помощью следующей команды bcp:

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T 
The contents of this format file are as follows: 9.0
4
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS

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

Б. Использование XML-файла форматирования

Следующий XML-файл форматирования использует собственный формат данных SQL Server для таблицы HumanResources.myTeam. Этот файл форматирования был создан с помощью следующей команды bcp:

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T 

Файл форматирования содержит:

 <?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" LENGTH="1"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

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

См. также

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

Работа с файлами форматирования

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

17 июля 2006 г.

Измененное содержимое