Указание форматов данных для совместимости с помощью программы bcp
При выполнении массового экспорта данных Microsoft SQL Server для массового импорта в другую программу, например другую базу данных, форматы данных по умолчанию (собственный, символьный или Юникод) исходной таблицы могут быть несовместимыми с макетом данных, ожидаемым другой программой. В этом случае при экспорте данных необходимо описать макет данных.
![]() |
---|
Описание форматов данных для импорта или экспорта см. в разделе Форматы данных для импорта или экспорта данных. |
Команда bcp позволяет указывать структуру каждого поля в файле данных в терминах следующих атрибутов формата данных.
Тип хранения файла
Тип файла хранилища описывает, каким образом данные хранятся в файле данных. Экспорт данных может быть выполнен в файл данных в формате таблиц баз данных (собственный формат), в символьном представлении (символьный формат) или в любом формате данных, поддерживающем неявное преобразование, например копирование данных типа smallint как int. Экспорт определяемых пользователем типов данных выполняется так, как их базовых типов. Дополнительные сведения см. в разделе Указание типа файлового хранилища с помощью программы bcp.
Длина префикса
Для обеспечения наиболее компактного хранилища файлов при массовом экспорте данных в файл собственного формата команда bcp предваряет каждое поле одним или несколькими символами, указывающими длину этого поля. Эти символы называются символами префикса длины. Дополнительные сведения см. в разделе Определение длины префикса в файлах данных.
Длина поля
Длина поля указывает максимальное количество символов, необходимых для представления данных в символьном формате. Если данные хранятся в собственном формате, то длина поля уже известна. Дополнительные сведения см. в разделе Указание длины поля с помощью программы bcp.
Признак конца поля
Для символьных полей данных можно определить символы, которые являются разделителями полей и строк в файле данных, указав признак конца поля и признак конца строки. Символы признака конца представляют собой один из способов сообщения программе, считывающей файл данных, где заканчивается одно поле или строка и начинается другое. Дополнительные сведения см. в разделе Определение признаков конца поля и строки.
Обзор приглашений, относящихся к полям
Если в интерактивной команде bcp указан параметр in или out без указания ключа файла форматирования (-f) или ключа формата данных (-n, -c, -w или -N), то для каждого столбца в таблице источника или целевой таблице команда по очереди запрашивает каждый из перечисленных атрибутов. В каждом приглашении команда bcp указывает значение по умолчанию на основе типа данных SQL Server столбца таблицы. Принятие значений по умолчанию для всех приглашений равносильно указанию собственного формата (-n) в командной строке. В каждом приглашении значение по умолчанию выводится в квадратных скобках: [default]. Чтобы согласиться с указанным значением по умолчанию, нажмите клавишу ВВОД. Чтобы указать другое значение, введите его в приглашении.
Пример
В следующем примере команда bcp применяется для выполнения интерактивного массового экспорта данных из таблицы HumanResources.myTeam в файл myTeam.txt. Перед выполнением примера следует создать эту таблицу. Дополнительные сведения о таблице и способе ее создания см. в разделе Создание таблицы HumanResources.myTeam.
Команда не указывает ни файл форматирования, ни тип данных, поэтому программа bcp запрашивает сведения о формате данных. В командной строке Microsoft Windows введите:
bcp AdventureWorks2008R2.HumanResources.myTeam out myTeam.txt -T
Для каждого столбца программа bcp запрашивает значения, относящиеся к полю. В следующем примере показаны относящиеся к полям приглашения для столбцов таблицы EmployeeID и Name, и для каждого столбца предлагается тип хранения файла по умолчанию (собственный формат). Длины префиксов столбцов EmployeeID и Name равны 0 и 2 соответственно. Пользователь указывает запятую (,) в качестве признака конца поля.
Enter the file storage type of field EmployeeID [smallint]:
Enter prefix-length of field EmployeeID [0]:
Enter field terminator [none]:,
Enter the file storage type of field Name [nvarchar]:
Enter prefix length of field Name [2]:
Enter field terminator [none]:,
.
.
.
Аналогичные приглашения (при необходимости) последовательно выводятся для каждого столбца таблицы.
Хранение данных полей в файле форматирования в формате, отличном от XML
После указания всех столбцов таблицы команда bcp предлагает сформировать файл форматирования в формате, отличном от XML, в который будут записаны предоставленные сведения о полях данных (см. предыдущий пример). Создать файл форматирования можно как при экспорте данных из этой таблицы, так и при импорте данных схожей структуры в SQL Server.
![]() |
---|
Файл форматирования можно использовать для массового импорта данных из файла данных в экземпляр SQL Server или для массового экспорта данных из таблицы, чтобы не указывать формат повторно. Дополнительные сведения см. в разделе Файлы форматирования для импорта или экспорта данных. |
В следующем примере создается файл форматирования в формате,myFormatFile.fmt отличном от XML:
Do you want to save this format information in a file? [Y/n] y
Host filename: [bcp.fmt]myFormatFile.fmt
Имя по умолчанию для файла форматирования — bcp.fmt, но можно указать и другое имя файла.
![]() |
---|
Для файла данных, использующего единственный формат данных для типа файлового хранилища, например символьный или собственный, можно быстро создать файл форматирования, не выполняя экспорт или импорт данных. Для этого укажите параметр format. Этот подход гораздо проще и позволяет создавать как XML-файлы форматирования, так и файлы форматирования в формате, отличном от XML. Дополнительные сведения см. в разделе Создание файла форматирования. |
В этом разделе
Этот раздел содержит следующие подразделы.
Подраздел |
Атрибут формата данных |
---|---|
Содержит сведения об указании типа хранения файла в команде bcp. |
|
Содержит сведения об указании длины префикса в команде bcp. |
|
Содержит сведения об указании длины поля в команде bcp. |
|
Содержит сведения об указании признака конца поля и строки в команде bcp. |
|
Содержит сведения о хранении форматированных символьных данных в экспортированном файле данных. |
См. также