Использование собственного формата Юникода для импорта или экспорта данных (SQL Server)

Собственный формат Юникода может быть полезен при копировании данных из одной установки Microsoft SQL Server в другую. Использование собственного формата для несимвольных данных позволяет сэкономить время благодаря исключению ненужных преобразований типов данных в символьный формат и обратно. Использование символьного формата Юникода для всех символьных данных предотвращает потерю дополнительных символов в ходе массовой передачи данных между серверами, использующими различные кодовые страницы. Файл данных в собственном формате Юникода может быть считан с помощью любого метода массового импорта.

Собственный формат Юникода рекомендуется использовать для массовой передачи данных между несколькими экземплярами SQL Server с помощью файла данных, который содержит дополнительный набор символов или символы в кодировке DBCS. В отношении несимвольных данных собственный формат Юникода использует собственные (для базы данных) типы данных. В отношении символьных данных, таких как char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max) и ntext, собственный формат Юникода использует формат данных Юникода.

Данные типа sql_variant, которые хранятся в виде инструкции SQLVARIANT в файле собственного формата Юникода, функционируют точно так, как в файле данных собственного формата, за исключением того, что значения типа char и varchar преобразуются в nchar и nvarchar, что требует вдвое больше места для хранения столбцов, подлежащих преобразованию. В процессе массового импорта в столбец таблицы исходные метаданные сохраняются, а значения преобразуются обратно в исходные типы данных char и varchar.

Командные параметры для собственного формата Юникода

Вы можете импортировать данные собственного формата Юникода в таблицу с помощью bcp, BULK INSERT или INSERT... SELECT * FROM OPENROWSET(BULK...). Для команды bcp или инструкции BULK INSERT можно указать формат данных в командной строке. Для инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...) нужно указать формат данных в файле форматирования.

Собственный формат Юникода поддерживается следующими параметрами.

Get-Help Параметр Описание
bcp -N Заставляет программу bcp использовать собственный формат Юникода, который использует собственные типы данных (базы данных) для всех несимваторных данных и формат символьных данных Юникода для всех символьных данных (char, , ncharvarchar, nvarchar, textи ntext).
BULK INSERT DATAFILETYPE ='widenative' Собственный формат Юникода используется при массовом импорте данных.

Дополнительные сведения см. в разделах служебная программа bcp, BULK INSERT (Transact-SQL) или OPENROWSET (Transact-SQL).

Примечание

Также в файле форматирования можно указать форматирование для каждого поля. Дополнительные сведения см. в статье Файлы форматирования для импорта или экспорта данных (SQL Server).

Примеры

В следующих примерах показан массовый экспорт данных в собственном формате с помощью программы bcp , а также массовый импорт тех же данных с помощью инструкции BULK INSERT.

Образец таблицы

Для использования в примерах необходимо создать таблицу myTestUniNativeData в образце базы данных AdventureWorks под схемой dbo . Перед выполнением примеров следует создать эту таблицу. В SQL Server Management Studio Редактор запросов выполните следующую команду:

USE AdventureWorks;  
GO  
CREATE TABLE myTestUniNativeData (  
   Col1 smallint,  
   Col2 nvarchar(50),  
   Col3 nvarchar(50)  
   );   

Чтобы заполнить эту таблицу и просмотреть результирующее содержимое, выполните следующие инструкции:

INSERT INTO myTestUniNativeData(Col1,Col2,Col3)  
   VALUES(1,'DataField2','DataField3');  
INSERT INTO myTestUniNativeData(Col1,Col2,Col3)  
   VALUES(2,'DataField2','DataField3');  
GO  
SELECT Col1,Col2,Col3 FROM myTestUniNativeData  
  

Массовый экспорт собственных данных с помощью программы bcp

Чтобы экспортировать данные из таблицы в файл данных, используйте команду bcp с параметром out и следующими квалификаторами:

Квалификаторы Описание
-N Указывает собственные типы данных.
-T Указывает, что программа bcp устанавливает доверительное соединение с SQL Server с использованием встроенной безопасности. Если параметр -T не указан, для входа необходимо указать -U и -P .

В следующем примере показан массовый экспорт данных в собственном формате из таблицы myTestUniNativeData в новый файл данных с именем myTestUniNativeData-N.Dat. В командной строке Microsoft Windows введите:

bcp AdventureWorks..myTestUniNativeData out C:\myTestUniNativeData-N.Dat -N -T  
  

Массовый импорт собственных данных с помощью инструкции BULK INSERT

В следующем примере с помощью инструкции BULK INSERT выполняется импорт данных из файла данных myTestUniNativeData-N.Dat в таблицу myTestUniNativeData . В SQL Server Management Studio Редактор запросов выполните следующую команду:

USE AdventureWorks;  
GO  
BULK INSERT myTestUniNativeData   
    FROM 'C:\myTestUniNativeData-N.Dat'   
   WITH (DATAFILETYPE='widenative');   
GO  
SELECT Col1,Col2,Col3 FROM myTestUniNativeData;  
GO  
  

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

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

См. также:

Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Типы данных (Transact-SQL)