Использование файлов форматирования, отличных от XML (SQL Server)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)База данных SQL в Microsoft Fabric

В SQL Server поддерживаются два типа файлов форматирования для массового экспорта и импорта: файлов форматирования, отличных от XML, и XML-файлов форматирования.

Преимущества файлов форматирования, отличных от XML

Можно автоматически создать файл формата, отличного от XML, указав параметр format в команде bcp .

При указании существующего файла форматирования в команде bcp команда использует значения, записанные в файле форматирования, и не запрашивает тип хранилища файлов, длину префикса, длину поля или конца поля.

Можно создать файл формата для определенного типа данных, например символьных данных или собственных данных.

Можно создать файл форматирования в формате, отличном от XML, который будет содержать определяемые в интерактивном режиме атрибуты для каждого поля данных. Дополнительные сведения см. в разделе "Указание форматов данных совместимости при использовании bcp (SQL Server)".

XML-файлы формата имеют несколько преимуществ над файлами формата, отличными от XML. Дополнительные сведения см. в XML-файлах формата (SQL Server).

Примечание.

Этот синтаксис, включая оператор массовой вставки, не поддерживается в Azure Synapse Analytics. В Azure Synapse Analytics и других облачных платформах баз данных выполните перемещение данных с помощью инструкции COPY в Фабрика данных Azure или с помощью инструкций T-SQL, таких как COPY INTO и PolyBase.

Структура файлов форматирования, отличных от XML

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

На следующей иллюстрации показаны поля файла формата для примера файла формата, отличного от XML.

Определяет поля файла форматирования, отличного от XML.

Поля Version и Number of columns встречаются только один раз. Их значения описаны в следующей таблице.

Поле файла форматирования Описание
Версия Номер версии программы bcp :

9.0 = SQL Server 2005 (9.x)

10.0 = SQL Server 2008 (10.0.x)

11.0 = SQL Server 2012 (11.x)

12.0 = SQL Server 2014 (12.x)

13.0 = SQL Server 2016 (13.x)

14.0 = SQL Server 2017 (14.x)

15.0 = SQL Server 2019 (15.x)

16.0 = SQL Server 2022 (16.x)

Номер версии распознается только bcp, а не Transact-SQL.

Примечание. Версия служебной программы bcp , используемая для чтения файла формата, должна совпадать с версией или более поздней версией, чем была использована для создания файла формата. Например, sql Server 2012 (11.x) bcp может прочитать файл формата версии 10.0, который создается sql Server 2008 (10.0.x) bcp, но SQL Server 2008 (10.0.x) bcp не может прочитать файл формата версии 12.0, который создается sql Server 2014 (12.x) bcp.
Число столбцов Число полей в файле данных. Это значение должно быть одинаковым во всех строках.

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

Поле файла форматирования Описание
Порядок полей в файле hosts Число, указывающее на расположение поля в файле данных. Первое поле в строке имеет номер 1 и т. д.
Тип данных файла Указывает тип данных, хранящихся в этом поле файла данных. Для ASCII-файлов используйте SQLCHAR; для файлов данных в собственном формате используйте типы данных по умолчанию. Дополнительные сведения см. в разделе "Указание типа хранилища файлов с помощью bcp (SQL Server)".
Длина префикса Количество символов префикса длины для поля. Допустимыми значениями длины префикса являются 0, 1, 2, 4 и 8. Чтобы не указывать длину префикса, установите это значение равным 0. Префикс длины должен быть указан, если поле содержит NULL значения данных. Дополнительные сведения см. в разделе "Указание длины префикса в файлах данных" с помощью bcp (SQL Server).
Длина данных в файле Максимальная длина (в байтах) для типа данных, содержащегося в соответствующем поле файла данных.

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

Дополнительные сведения см. в разделе "Указание длины поля" с помощью bcp (SQL Server).
Терминатор Разделитель полей в файле данных. Распространенные терминаторы: запятая (), вкладка (,\t) и конец строки (\r\n). Дополнительные сведения см. в разделе "Указание терминаторов полей и строк" (SQL Server).
Порядок столбцов на сервере Порядок отображения столбцов в таблице SQL Server. Например, если четвертое поле в файле данных сопоставляется с шестым столбцом в таблице SQL Server, порядок столбцов сервера для четвертого поля равен 6.

Чтобы столбец в таблице не получал данные из файла данных, задайте для значения порядка столбцов сервера значение 0.
Имя столбца на сервере Имя столбца, скопированного из таблицы SQL Server. Фактическое имя поля не обязательно, но поле в файле форматирования не должно быть пустым.
Правила сортировки столбца Правила сортировки, используемые для хранения символьных данных и данных Юникода в файле данных.

Примечание.

Можно изменить файл форматирования так, чтобы обеспечить возможность массового импорта данных из файла, в котором количество или порядок полей отличаются от количества или порядка столбцов в таблице. Дополнительные сведения см. в списке связанных задач .

Пример файла форматирования, отличного от XML

В следующем примере показан ранее созданный файл форматирования (myDepartmentIdentical-f-c.fmt) в формате, отличном от XML. В этом файле описываются поля символьных данных для каждого столбца таблицы HumanResources.Department в образце таблицы AdventureWorks2025 .

Созданный файл форматирования myDepartmentIdentical-f-c.fmtсодержит следующие данные:

12.0
4
1       SQLCHAR       0       7       "\t"     1     DepartmentID     ""
2       SQLCHAR       0       100     "\t"     2     Name             SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       100     "\t"     3     GroupName        SQL_Latin1_General_CP1_CI_AS
4       SQLCHAR       0       24      "\r\n"   4     ModifiedDate     ""

Примечание.

Иллюстрацию, на которой показаны поля файла формата применительно к этому примеру не-XML файла формата, см. в разделе Структура не-XML файлов формата.