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

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

В SQL Server 2014 (12.x) и более поздних версиях можно с помощью программы bcp импортировать данные в собственном и символьном формате из SQL Server 2000 (8.x), SQL Server 2005 (9.x), SQL Server 2008, SQL Server 2008 R2 или SQL Server 2012 (11.x), задав ключ -V. Ключ -V указывает SQL Server , что следует использовать типы данных из указанной более ранней версии SQL Serverи что формат файла данных аналогичен формату в предыдущей версии.

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

Версия SQL Server Квалификатор
SQL Server 2000 (8.x) -V80
SQL Server 2005 (9.x) -V90
SQL Server 2008 -V100
SQL Server 2012 (11.x) -V 110

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

SQL Server 2005 (9.x) и более поздних версиях была добавлена поддержка некоторых новых типов данных. Если нужно импортировать новый тип данных в более раннюю версию SQL Server , эти данные необходимо сохранить в формате, который могут прочитать старые клиенты bcp . Следующая таблица содержит сведения о том, как новые типы данных преобразуются для совместимости с более ранними версиями 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
UDT** image image image

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

**UDT обозначает определяемый пользователем тип.

Экспорт с ключом -V 80

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

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

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

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

Важно!

При импорте данных в поле smalldatetime с помощью программы bcpнужно убедиться, что значение секунд равно 00,000; в противном случае во время операции возникнет ошибка. Тип данных smalldatetime содержит только значения с точностью до минуты. В данном случае инструкции BULK INSERT и INSERT ... SELECT * FROM OPENROWSET(BULK...) не приведут к ошибке, но усекут значение секунд.

Связанные задачи

Использование форматов данных для массового импорта или экспорта

См. также:

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