Поделиться через


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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

В SQL Server 2014 (12.x) и более поздних версиях Bcp можно использовать для импорта данных собственного и символьного формата из SQL Server 2000 (8.x), SQL Server 2005 (9.x), SQL Server 2008 (10.0.x), SQL Server 2008 R2 (10.50.x) или 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 (10.0.x) -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 десятичное десятичное *
sql_variant text nvarchar(4000) *
varchar(max) text text text
nvarchar(max) ntext ntext ntext
varbinary(max) Изображение Изображение Изображение
XML ntext ntext ntext
UDT** Изображение Изображение Изображение

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

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

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

При массовом экспорте данных с помощью переключателя -V80 nvarchar(max), varchar(max), varbinary(max), XML и UDT в собственном режиме хранятся с префиксом 4-байтов, например текстовыми, изображениями и 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 Utility
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Типы данных (Transact-SQL)
Обратная совместимость компонента ядра СУБД SQL Server
CAST и CONVERT (Transact-SQL)