Указание типа файлового хранилища с помощью программы bcp (SQL Server)
Тип файла хранилища описывает, каким образом данные хранятся в файле данных. Данные можно экспортировать в файл данных в формате таблиц баз данных (собственный формат), в символьном представлении (символьный формат) или в любом формате данных, поддерживающем неявное преобразование, например копирование данных типа smallint как int. Пользовательские типы данных экспортируются так же, как их базовые типы.
Приглашение bcp указать тип файлового хранилища
Если интерактивная команда bcp содержит параметр in или out без параметра файла форматирования ( -f) или параметра формата данных ( -n, -c, -w или -N), команда запрашивает тип файлового хранилища для каждого поля данных следующим образом:
Enter the file storage type of field <field_name> [<default>]:
Ответ на такое приглашение зависит от выполняемой задачи.
Для массового экспорта данных из экземпляра Microsoft SQL Server в файл данных в наиболее компактном хранилище (собственный формат данных) примите типы файловых хранилищ по умолчанию, которые предлагает программа bcp. Список собственных типов файловых хранилищ см. в разделе «Собственные типы файловых хранилищ» далее в этом подразделе.
Для массового экспорта данных из экземпляра SQL Server в файл данных в символьном формате укажите в качестве типа файлового хранилища char для всех столбцов таблицы.
Для массового импорта данных в экземпляр SQL Server из файла данных укажите тип файлового хранилища char для типов, для которых данные хранятся в символьном формате, а для данных, хранящихся в формате собственного типа данных, укажите один из типов файлового хранилища.
Тип файла хранилища Введите в командной строке char c[har] varchar c[har] nchar w nvarchar w text T[ext] ntext2 W binary x varbinary x image I[mage] datetime d[ate] smalldatetime D time te date de datetime2 d2 datetimeoffset do decimal n numeric n float f[loat] real r Int i[nt] bigint B[igint] smallint s[mallint] tinyint t[inyint] money m[oney] smallmoney M bit b[it] uniqueidentifier u sql_variant V[ariant] timestamp x UDT (определяемый пользователем тип данных) U XML X
*Взаимосвязь длины поля, длины префикса и признаков конца определяет объем хранилища, выделяемый в файле данных для несимвольных данных, экспортируемых в качестве типа файлового хранилища char .
** Типы данных ntext, text и image будут исключены в следующей версии SQL Server. Следует избегать использования этих типов данных при новой разработке и запланировать изменение приложений, использующих их в настоящий момент. Вместо них следует использовать типы данных nvarchar(max) , varchar(max) и varbinary(max) .
Собственные типы файловых хранилищ
Все собственные типы файловых хранилищ записаны в файле форматирования как соответствующие типы данных основных файлов.
Тип файла хранилища Тип данных файла char SQLCHAR varchar SQLCHAR nchar SQLNCHAR nvarchar SQLNCHAR text SQLCHAR ntext SQLNCHAR binary SQLBINARY varbinary SQLBINARY image SQLBINARY datetime SQLDATETIME smalldatetime SQLDATETIM4 decimal SQLDECIMAL numeric SQLNUMERIC float SQLFLT8 real SQLFLT4 int SQLINT bigint SQLBIGINT smallint SQLSMALLINT tinyint SQLTINYINT money SQLMONEY smallmoney SQLMONEY4 bit SQLBIT uniqueidentifier SQLUNIQUEID sql_variant SQLVARIANT timestamp SQLBINARY UDT (определяемый пользователем тип данных) SQLUDT
*Для файлов данных, хранящихся в символьном формате, в качестве типа файлового хранилища используется char . Таким образом, для символьных файлов данных SQLCHAR — это единственный тип данных, допустимый в файле форматирования.
**Невозможно массово импортировать данные в столбцы text, ntext и image , если они содержат значения DEFAULT.
Дополнительные замечания относительно типов файловых хранилищ
При массовом экспорте данных из экземпляра SQL Server в файл данных:
можно указать в качестве типа файлового хранилища char ;
если указан тип файлового хранилища, представляющий недопустимое неявное преобразование, то работа bcp завершится ошибкой. Например, хотя можно указать int для данных smallint , если задать smallint для данных int , итогом станет ошибка переполнения;
когда несимвольные типы данных, такие как float, money, datetime или int , хранятся с использованием соответствующих типов баз данных, то данные записываются в файл данных в собственном формате SQL Server .
После интерактивного заполнения всех полей в команде bcp появится запрос на сохранение введенных ответов для каждого поля в файле форматирования в формате, отличном от XML. Дополнительные сведения о файлах форматирования в формате, отличном от XML, см. в разделе Файлы формата, отличные от XML (SQL Server).