Общие сведения о файлах форматирования
Файл форматирования содержит сведения о форматировании для каждого поля в файле данных по отношению к определенной таблице. Файл форматирования содержит все данные, необходимые для выполнения массового экспорта или импорта данных. Он обеспечивает гибкую систему записи файлов данных, которая не требует или почти не требует редактирования для согласования с другими форматами данных или считывания данных другими программами.
В Microsoft SQL Server 2000 и более ранних версиях операции массового экспорта и импорта работали с одним типом файла форматирования. Это поддерживается до сих пор. Однако в 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 в простых случаях использование файла форматирования необязательно и требуется редко. Однако при выполнении сложных операций массового импорта файл форматирования очень часто необходим.
Файлы форматирования необходимы, если:
Один и тот же файл данных используется в качестве источника для нескольких таблиц с разными схемами.
число полей в файле данных отличается от числа столбцов в целевой таблице, например:
целевая таблица содержит по крайней мере один столбец, для которого либо задано значение по умолчанию, либо разрешено значение NULL;
пользователи не имеют разрешений на выполнение инструкций SELECT/INSERT в одном или нескольких столбцах таблицы;
один и тот же файл данных используется для двух или более таблиц с разными схемами.
порядок столбцов в файле данных отличается от порядка столбцов в таблице;
завершающие символы или длины префиксов отличаются в столбцах файла данных.
Примечание |
---|
Если отсутствует файл форматирования и если в команде bcp указан параметр формата данных (-n, -c, -w или -N) либо операция BULK INSERT указана с параметром DATAFILETYPE, то указанный формат используется как метод по умолчанию для интерпретации полей файла данных. |
Примеры
В следующих примерах показана структура файлов форматирования в формате, отличном от XML, и XML-файлов форматирования. Эти файлы форматирования соответствуют таблице HumanResources.myTeam в образце базы данных База данных AdventureWorks2008R2. Эта таблица содержит четыре столбца: EmployeeID, Name, Title и ModifiedDate.
Примечание |
---|
Дополнительные сведения о таблице и способе ее создания см. в разделе Создание таблицы HumanResources.myTeam. |
А. Использование файла форматирования в формате, отличном от XML
Следующий файл форматирования в формате, отличном от XML использует собственный формат данных SQL Server для таблицы HumanResources.myTeam. Этот файл форматирования был создан с помощью следующей команды bcp:
bcp AdventureWorks2008R2.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 AdventureWorks2008R2.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-файлах форматирования.