Файл форматування містить відомості про форматування для кожного поля в файлі даних по відношенню до певної таблиці. Файл форматування містить всі дані, необхідні для виконання масового експорту або імпорту даних. Він забезпечує рівень гнучкості, при якому майже або зовсім не потрібно редагування файлів даних для узгодження з іншими форматами даних або для читання даних, підготовлених іншими програмами.
Всі файли форматування містять описи полів файлу даних. 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 в одному або декількох стовпчиках таблиці;
- один і той же файл даних використовується для двох або більше таблиць з різними схемами.
- цільова таблиця містить принаймні один стовпець, для якого або задано значення за замовчуванням, або дозволено значення NULL;
- порядок стовпців у файлі даних відрізняється від порядку стовпців в таблиці;
- завершальні символи або довжини префіксів відрізняються в шпальтах файлу даних.
Якщо відсутній файл форматування і якщо в команді bcp вказано параметр формату даних (-n. -c. -w або -N) або операція BULK INSERT вказана з параметром DATAFILETYPE, то зазначений формат використовується як метод за замовчуванням для інтерпретації полів файлу даних.