Поделиться через


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

Применимо:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azureazure Synapse Analytics AnalyticsPlatform System (PDW)

В 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.

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

Поле файла форматирования Description
Версия Номер версии программы 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.
Число столбцов Число полей в файле данных. Это значение должно быть одинаковым во всех строках.

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

Поле файла форматирования Description
Порядковый номер поля в файле данных Число, указывающее на расположение поля в файле данных. Первое поле в строке имеет номер 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 в образце таблицы AdventureWorks2022 .

Созданный файл форматирования 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".