Определение длины префикса в файлах данных

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

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

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

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

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

ms190779.note(ru-ru,SQL.90).gifПримечание.
После того как все поля в интерактивном режиме в команде bcp определены, она предлагает сохранить настройки для каждого поля в файле форматирования не в формате XML. Дополнительные сведения о файлах форматирования в форматах, отличных от XML, см. в разделе Основные сведения о файлах форматирования не в формате XML.

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

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

ms190779.note(ru-ru,SQL.90).gifВажно!
При использовании собственного формата предпочтительнее использовать префиксы длины, а не признаки конца поля. Собственный формат данных может конфликтовать с признаками конца, поскольку файл данных в собственном формате хранится во внутреннем двоичном формате данных SQL Server.

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

ms190779.note(ru-ru,SQL.90).gifПримечание.
Значение по умолчанию, предлагаемое при запросе длины префикса при экспорте поля, означает оптимальную длину префикса для этого поля.

Значения 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

text1

4

4

4

4

ntext1

4

4

4

4

binary

2

2

2

2

varbinary

2

2

2

2

image1

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

Определяемый пользователем тип данных

8

8

8

8

XML

8

8

8

8

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

Дополнительные сведения см. в разделе Хранение данных в символьном формате.

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

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

ms190779.note(ru-ru,SQL.90).gifПримечание.
Для определения длины префикса в файле данных, который не был создан при помощи bcp, воспользуйтесь длинами, указанными в расположенном выше разделе «Длины префиксов для массового экспорта».

См. также

Основные понятия

Указание длины поля с помощью программы bcp
Определение признаков конца поля и строки
Указание типа файлового хранилища с помощью программы bcp
Хранение данных в символьном формате

Другие ресурсы

Программа bcp
Типы данных (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005