Определение длины префикса в файлах данных с помощью программы bcp (SQL Server)
Для наиболее компактного хранения файлов при массовом экспорте данных собственного формата в файл данных команда 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 |
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 |
UDT (определяемый пользователем тип данных) |
8 |
8 |
8 |
8 |
XML |
8 |
8 |
8 |
8 |
1 Типы данных ntext, text и image будут удалены в следующей версии SQL Server. Избегайте использования этих типов данных в новых проектах и запланируйте внесение изменений в приложения, использующие их в настоящее время. Используйте вместо них типы данных nvarchar(max), varchar(max) и varbinary(max).
Длины префиксов для массового импорта
При массовом импорте данных длина префикса — это значение, указанное при первоначальном создании файла данных. Если этот файл данных был создан не командой bcp, символы префикса длины могут не существовать. В этом случае в качестве длины префикса нужно указать 0.
Примечание |
---|
Для определения длины префикса в файле данных, созданном без помощи программы bcp, используйте значения длины, указанные выше в разделе Длина префиксов для массового экспорта. |
См. также
Справочник
Основные понятия
Указание длины поля с помощью программы bcp (SQL Server)
Определение признаков конца поля и строки (SQL Server)
Указание типа файлового хранилища с помощью программы bcp (SQL Server)