Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция bcp_setcolfmt заменяет bcp_colfmt. При указании сортировки столбцов необходимо использовать функцию bcp_setcolfmt . bcp_setbulkmode можно использовать для указания нескольких форматов столбцов.
Эта функция обеспечивает гибкий подход к указанию формата столбца в операции массового копирования. Он используется для задания атрибутов формата отдельных столбцов. Каждый вызов bcp_setcolfmt задает один атрибут формата столбца.
Функция bcp_setcolfmt указывает исходный или целевой формат данных в пользовательском файле. При использовании в качестве исходного формата bcp_setcolfmt указывает формат существующего файла данных, используемого в качестве источника данных в массовом копировании в таблицу в SQL Server. При использовании в качестве целевого формата файл данных создается с помощью форматов столбцов, указанных в bcp_setcolfmt.
Синтаксис
RETCODE bcp_setcolfmt (
HDBC
hdbc
,
INT
field
,
INT
property
,
void*
pValue
,
INT
cbValue
);
Аргументы
hdbc
Дескриптор соединения ODBC с поддержкой массового копирования.
поле
Номер порядкового столбца, для которого задано свойство.
свойство
Является одной из констант свойств. Константы свойств определены в этой таблице.
| Недвижимость | Ценность | Описание |
|---|---|---|
| BCP_FMT_TYPE | БАЙТ | Тип данных этого столбца в пользовательском файле. Если это отличается от типа данных соответствующего столбца в таблице базы данных, массовое копирование преобразует данные, если это возможно. Параметр BCP_FMT_TYPE перечисляется маркерами типа данных SQL Server в sqlncli.h, а не перечислителями типов данных ODBC C. Например, можно указать символьную строку, тип ODBC SQL_C_CHAR, используя тип SQLCHARACTER, относящийся к SQL Server. Чтобы указать представление данных по умолчанию для типа данных SQL Server, задайте для этого параметра значение 0. Для массового копирования из SQL Server в файл, если BCP_FMT_TYPE является SQLDECIMAL или SQLNUMERIC: — Если исходный столбец не является десятичным или числовым, используется точность и масштабирование по умолчанию. — Если исходный столбец является десятичным или числовым, используется точность и масштаб исходного столбца. |
| BCP_FMT_INDICATOR_LEN | ИНТ | Длина индикатора (префикс) в байтах. Это длина (в байтах) индикатора длины или null в данных столбца. Допустимые значения длины индикатора : 0 (при использовании без индикатора), 1, 2 или 4. Чтобы указать использование индикатора массового копирования по умолчанию, задайте для этого параметра значение SQL_VARLEN_DATA. Индикаторы отображаются в памяти непосредственно перед любыми данными и непосредственно перед данными, к которым они применяются. Если используется несколько средств указания длины столбца файла данных (например, индикатора и максимальной длины столбца, или индикатора и последовательности конца), массовое копирование выбирает тот, который приводит к наименьшей сумме копируемых данных. Файлы данных, созданные при массовом копировании, если вмешательство пользователя не изменяет формат данных, содержащих индикаторы, если данные столбца могут отличаться в длине, или столбец может принимать ЗНАЧЕНИЕ NULL в качестве значения. |
| BCP_FMT_DATA_LEN | DBINT | Длина в байтах данных (длина столбца) Это максимальная длина в байтах данных этого столбца в пользовательском файле, не включая длину индикатора длины или конца. Параметр BCP_FMT_DATA_LEN значение SQL_NULL_DATA указывает, что все значения в столбце файла данных имеют значение NULL или должны иметь значение NULL. Если BCP_FMT_DATA_LEN SQL_VARLEN_DATA, система должна определить длину данных в каждом столбце. Для некоторых столбцов это может означать, что индикатор длины или null создается перед данными копии из SQL Server или что индикатор ожидается в данных, скопированных в SQL Server. Для типов символов SQL Server и двоичных данных BCP_FMT_DATA_LEN можно SQL_VARLEN_DATA, SQL_NULL_DATA, 0 или некоторое положительное значение. Если BCP_FMT_DATA_LEN SQL_VARLEN_DATA, система использует либо индикатор длины, либо последовательность конца для определения длины данных. Если указан индикатор длины и последовательность конца, массовая копия использует тот, который приводит к минимальному объему копируемых данных. Если BCP_FMT_DATA_LEN SQL_VARLEN_DATA, тип данных является символом SQL Server или двоичным типом, и ни индикатор длины, ни последовательность конца не указана, система возвращает сообщение об ошибке. Если BCP_FMT_DATA_LEN равно 0 или положительному значению, система использует BCP_FMT_DATA_LEN в качестве максимальной длины данных. Однако если в дополнение к положительному BCP_FMT_DATA_LEN предоставляется индикатор длины или последовательность конца, система определяет длину данных с помощью метода, который приводит к наименьшей сумме копируемых данных. Значение BCP_FMT_DATA_LEN представляет количество байтов данных. Если символьные данные представлены широкими символами Юникода, положительное значение параметра BCP_FMT_DATA_LEN представляет количество символов, умноженных на размер в байтах каждого символа. |
| BCP_FMT_TERMINATOR | LPCBYTE | Указатель на последовательность конца (ANSI или Юникод в соответствии с соответствующими параметрами) для этого столбца. Этот параметр используется главным образом для типов символьных данных, так как все остальные типы имеют фиксированную длину или, в случае двоичных данных, требуют индикатор длины для точной записи количества байтов. Чтобы избежать завершения извлеченных данных или указать, что данные в пользовательском файле не завершаются, задайте для этого параметра значение NULL. Если используется несколько способов указания длины столбца пользовательского файла (например, индикатора конца и длины или конца и максимальной длины столбца), массовое копирование выбирает тот, который приводит к наименьшей сумме копируемых данных. При необходимости API-интерфейс массового копирования выполнит преобразование символов из Юникода в многобайтовую кодировку (MBCS). Необходимо принять меры, чтобы убедиться, что строка байтов и длина строки байтов заданы правильно. |
| BCP_FMT_SERVER_COL | ИНТ | Порядковое положение столбца в базе данных |
| BCP_FMT_COLLATION | LPCSTR | Имя сортировки. |
pValue
Указатель на значение, которое необходимо связать с свойством. Он позволяет задать каждое свойство формата столбца по отдельности.
cbvalue
Длина буфера свойств в байтах.
Возвраты
SUCCEED или FAIL.
Замечания
Эта функция заменяет функцию bcp_colfmt . Все функциональные возможности bcp_colfmt предоставляются в bcp_setcolfmt функции. Кроме того, также предоставляется поддержка сортировки столбцов. Рекомендуется задать следующие атрибуты формата столбцов в указанном ниже порядке:
BCP_FMT_SERVER_COL
BCP_FMT_DATA_LEN
BCP_FMT_TYPE
Функция bcp_setcolfmt позволяет указать формат пользовательского файла для массовых копий. Для массового копирования формат содержит следующие части:
Сопоставление столбцов пользовательского файла с столбцами базы данных.
Тип данных каждого столбца пользовательского файла.
Длина необязательного индикатора для каждого столбца.
Максимальная длина данных для столбца пользовательского файла.
Необязательная байтовая последовательность для каждого столбца.
Длина необязательной последовательности байтов.
Каждый вызов bcp_setcolfmt задает формат для одного столбца пользовательского файла. Например, чтобы изменить параметры по умолчанию для трех столбцов в файле данных пользователя с пятью столбцами, сначала вызовите bcp_columns(5), а затем вызовите bcp_setcolfmt пять раз с тремя из этих вызовов, задав настраиваемый формат. Для оставшихся двух вызовов задайте для BCP_FMT_TYPE значение 0 и задайте BCP_FMT_INDICATOR_LENGTH, BCP_FMT_DATA_LEN и cbValue значение 0, SQL_VARLEN_DATA и 0 соответственно. Эта процедура копирует все пять столбцов, три с настраиваемым форматом и двумя с форматом по умолчанию.
Перед вызовом bcp_setcolfmt необходимо вызвать функцию bcp_columns.
Необходимо вызвать bcp_setcolfmt один раз для каждого свойства каждого столбца в пользовательском файле.
Не нужно копировать все данные в пользовательском файле в таблицу SQL Server. Чтобы пропустить столбец, укажите формат данных для столбца, задав параметр BCP_FMT_SERVER_COL значение 0. Если вы хотите пропустить столбец, необходимо указать его тип.
Функцию bcp_writefmt можно использовать для сохранения спецификации формата.
поддержка расширенных функций даты и времени bcp_setcolfmt
Типы, используемые со свойством BCP_FMT_TYPE для типов даты и времени, указаны в разделе "Изменения массового копирования для расширенных типов даты и времени" (OLE DB и ODBC).
Дополнительные сведения см. в разделе "Улучшения даты и времени" (ODBC).