Определение длины префикса в файлах данных с помощью программы bcp (SQL Server)

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

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

Запрос длины префикса программой bcp

Если интерактивная команда bcp содержит параметр in или out без параметра файла форматирования ( -f) или параметра формата данных ( -n, -c, -wили -N), то команда запрашивает длину префикса каждого поля данных следующим образом:

Enter prefix length of field <field_name> [<default>]:

Если указать значение 0, программа bcp попросит указать либо длину поля (для символьного типа данных), либо признак конца поля (для собственного несимвольного типа).

Примечание

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

Обзор параметра «Длина префикса»

Для сохранения длины префикса поля требуется число байтов, достаточное для представления максимальной длины этого поля. Необходимое число байтов зависит также от типа хранения файла, возможности столбца содержать значения NULL и от способа хранения данных в этом файле — в собственном или символьном формате. Например, типы данных text или image требуют четырех символов для хранения длины поля, а тип данных varchar требует двух символов. В файле данных эти символы префикса длины хранятся во внутреннем двоичном формате SQL Server.

Важно!

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

Длины префиксов для массового экспорта

Примечание

Значение по умолчанию, предлагаемое при запросе длины префикса при экспорте поля, означает оптимальную длину префикса для этого поля.

Значения NULL отображаются в виде пустого поля. Для обозначения того, что поле пустое (значение NULL), префикс этого поля содержит значение -1, то есть для него необходим как минимум 1 байт. Обратите внимание, что если столбец таблицы SQL Server допускает значения NULL, для него необходима длина префикса не менее 1, вне зависимости от типа хранения файла.

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

SQL Server

тип данных
Собственный формат

NOT NULL
Собственный формат

NULL
Символьный формат

NOT NULL
Символьный формат

NULL
char 2 2 2 2
varchar 2 2 2 2
nchar 2 2 2 2
nvarchar 2 2 2 2
text* 4 4 4 4
ntext* 4 4 4 4
binary 2 2 2 2
varbinary 2 2 2 2
image* 4 4 4 4
datetime 0 1 0 1
smalldatetime 0 1 0 1
decimal 1 1 1 1
numeric 1 1 1 1
float 0 1 0 1
real 0 1 0 1
int 0 1 0 1
bigint 0 1 0 1
smallint 0 1 0 1
tinyint 0 1 0 1
money 0 1 0 1
smallmoney 0 1 0 1
bit 0 1 0 1
uniqueidentifier 1 1 0 1
timestamp 1 1 1 1
varchar(max) 8 8 8 8
varbinary(max) 8 8 8 8
UDT (определяемый пользователем тип данных) 8 8 8 8
XML 8 8 8 8
sql_variant 8 8 8 8

*Типы данных ntext, text и image будут удалены в следующей версии SQL Server. Следует избегать использования этих типов данных при новой разработке и запланировать изменение приложений, использующих их в настоящий момент. Вместо них следует использовать типы данных nvarchar(max), varchar(max)и varbinary(max) .

Длины префиксов для массового импорта

При массовом импорте данных длина префикса — это значение, указанное при первоначальном создании файла данных. Если файл данных не создан командой bcp , символы префикса длины, возможно, не существуют. В этом случае в качестве длины префикса нужно указать 0.

Примечание

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

См. также:

Программа bcp
Типы данных (Transact-SQL)
Указание длины поля с помощью программы bcp (SQL Server)
Определение признаков конца поля и строки (SQL Server)
Указание типа файлового хранилища с помощью программы bcp (SQL Server)