Импорт данных в собственном и символьном формате из предыдущих версий SQL Server

Чтобы использовать программу bcp для импорта данных собственного и символьного форматов из Microsoft SQL Server 2000 и более ранних версий, используйте ключ -V. При указании ключа -V Microsoft SQL Server 2005 использует типы данных из ранних версий Microsoft SQL Server, и формат файла данных будет таким же, как в этой версии.

ms191212.note(ru-ru,SQL.90).gifПримечание.
Ключ -V расширяет функциональность ключа -6, который используется в Microsoft SQL Server 7.0. Использовать -6 — то же самое, что использовать -V60 или -V65. Хотя SQL Server все еще поддерживает ключ -6, он признан устаревшим. Поэтому рекомендуется использовать -V.

Чтобы указать, относится ли файл данных к уровню одной из ранних версий SQL Server, используйте ключ -V следующим образом.

Версия SQL Server Квалификатор

Microsoft SQL Server 6.0

-V60

Microsoft SQL Server 6.5

-V65

SQL Server 7.0

-V70

SQL Server 2000

-V80

Интерпретация типов данных SQL Server 2005

В SQL Server 2005 была добавлена поддержка некоторых новых типов данных. Когда нужно импортировать новый тип данных из SQL Server 2005 в SQL Server 2000 или более раннюю версию, эти данные должны быть сохранены в формате, который могут прочитать старые клиенты bcp. Следующая таблица содержит сведения о том, как новые типы данных в SQL Server 2005 преобразуются для совместимости с более ранними версиями SQL Server.

Новые типы данных в SQL Server 2005 Совместимые типы данных в версии 6x Совместимые типы данных в версии 70 Совместимые типы данных в версии 80

bigint

decimal

decimal

*

sql_variant

text

nvarchar(4000)

*

varchar(max)

text

text

text

nvarchar(max)

ntext

ntext

ntext

varbinary(max)

image

image

image

XML

ntext

ntext

ntext

UDT1

image

image

image

* Этот тип поддерживается изначально.

1 UDT обозначает пользовательский тип.

Экспорт из SQL Server 2005

При массовом экспорте данных из SQL Server 2005 с использованием ключа -V80 хранятся в собственном режиме данные типов nvarchar(max), varchar(max), varbinary(max), XML и UDT хранятся с 4-байтовым префиксом, как данные text, image и ntext, вместо 8-байтного префикса, установленного по умолчанию для SQL Server 2005.

Экспорт из SQL Server 7.0 более и ранних версий

При массовом экспорте данных из SQL Server 7.0 и более ранних версий, нужно учитывать следующее.

  • Формат хранения данных типа bigint, экспортированных из SQL Server 7.0, SQL Server 6.5 или SQL Server 6.0, зависит от формата данных в файле данных:
    • В собственном режиме или в файле данных собственного формата Юникод, данные bigint хранятся в виде decimal(19,0).
    • В символьном режиме или в файле данных символьного формата Юникод данные bigint хранятся как символ или строка Юникод вида [-]digits, (например, -25688904432).
  • Для таблицы со столбцами типа char или varchar при экспорте данных из SQL Server 6.0 или SQL Server 6.5 программа bcp добавляет однобайтовый префикс для каждого поля файла данных, равный длине данных. В таблице с данными типа numeric данные записываются в файл данных в собственном формате SQL Server.
  • В SQL Server 7.0 и SQL Server 2000 значение 0 представляет столбец нулевой длины.

Экспорт из SQL Server 6.5 или 6.0

При массовом экспорте данных из SQL Server 6.5 или 6.0 нужно дополнительно учитывать следующее.

  • В SQL Server 6.5 и более ранних версиях программа bcp представляет значения NULL как значение длины 0, в то время как ныне NULL хранится в виде длины строки -1.
  • Значения NULL в столбцах типа bit записываются как 0, поскольку SQL Server 6.5 и более ранних версий не поддерживает данные типа bit, способные принимать значения NULL.
  • Программа bcp не создает форматов даты SQL Server 6.0 или SQL Server 6.5 для каких-либо данных типов datetime или smalldatetime. Даты всегда записываются в формате ODBC.
  • Использование ключа -V65 может повлиять на производительность, так как для поддержки нескольких преобразований данных требуются дополнительные ресурсы.
  • Значения данных в SQL Server 6.5 и более ранних версиях отличаются. Дополнительные сведения см. в следующем подразделе «Копирование значений данных».

Копирование значений данных

Начиная с SQL Server 7.0, программа bcp использует API-интерфейс массового копирования ODBC. Поэтому, чтобы импортировать значения данных в SQL Server 7.0 и более ранние версии, программа bcp использует формат данных ODBC (yyyy-mm-dd hh:mm:ss[.f...]).

В SQL Server 6.5 и более ранних версиях, напротив, программа bcp использует API-интерфейс массового копирования DB-Library и ее формат даты. Чтобы экспортировать форматы дат в SQL Server 7.0 и более поздние версии из SQL Server 6.5 и более ранних версий, следует использовать ключ -V65. Если указан ключ -V65, программа bcp сначала пытается конвертировать значение даты в файл данных, используя формат даты ODBC. Если преобразование не удается, программа bcp пытается конвертировать значение даты, используя форматы DB-Library.

Даже если указан ключ -V65, команда bcp всегда экспортирует данные символьного формата с помощью формата ODBC по умолчанию для значений datetime и smalldatetime. Например, столбец типа datetime, содержащий дату 12 Aug 1998, копируется с помощью массового копирования в файл данных в качестве строки символов 1998-08-12 00:00:00.000.

ms191212.note(ru-ru,SQL.90).gifВажно!
При импорте данных в поле smalldatetime посредством программы bcp нужно убедиться, что значение секунд равно 00.000; в противном случае произойдет сбой. Тип данных smalldatetime содержит значения только с точностью до минуты. В данном случае инструкции BULK INSERT и INSERT ...SELECT * FROM OPENROWSET(BULK...) не приведут к сбою, но усекут значение секунд.

Использование ключа -V65 может повлиять на производительность, так как для поддержки нескольких преобразований данных требуются дополнительные ресурсы.

См. также

Основные понятия

Форматы данных для импорта или экспорта данных

Другие ресурсы

Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Типы данных (Transact-SQL)
Обратная совместимость компонента SQL Server 2005 Database Engine
Функции CAST и CONVERT (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005