Определение длины префикса в файлах данных с помощью программы bcp (SQL Server)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform 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 |
Изображение* | 4 | 4 | 4 | 4 |
datetime | 0 | 1 | 0 | 1 |
smalldatetime | 0 | 1 | 0 | 1 |
десятичное | 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 Utility
Типы данных (Transact-SQL)
Указание длины поля с помощью bcp (SQL Server)
Определение признаков конца поля и строки (SQL Server)
Указание типа хранилища файлов с помощью bcp (SQL Server)